You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Matplotlib绘制双列柱状图如何设置xtick从第一个柱子开始显示?

问题原因

你代码中plt.xticks()的第一个参数传入的是X(即Point列的110数值),但双柱的基准坐标是从0开始的`X_axis`(即09的序列),二者位置不匹配,导致刻度整体右移了一个单位,才会出现从第二个柱子开始显示的问题。

修改方法

直接修改plt.xticks的第一个参数为X_axis即可,修改后对应代码行如下:

plt.xticks(X_axis, labels, rotation=60)

如果不想单独定义labels变量,也可以直接用X作为刻度值,写法更简洁:

plt.xticks(X_axis, X, rotation=60)
修改后完整可运行代码
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 示例数据
data = [
    [1,62.33,62.3368],
    [2,64.9,64.97409],
    [3,66.61,66.64898],
    [4,69.92,69.91074],
    [5,70.79,70.80359],
    [6,71.41,71.42479],
    [7,74.86,74.84357],
    [8,78.36,78.31594],
    [9,79.67,79.65846],
    [10,80.43,80.40633]
]
df = pd.DataFrame(data, columns=['Point','Actual','Predicted'])

plt.figure(figsize=(3,2))

X = list(df.iloc[:, 0])
Y = list(df.iloc[:, 1])
Z= list(df.iloc[:, 2])

X_axis = np.arange(len(X))
plt.bar(X_axis - 0.2, Y, 0.4, label='Actual',color='#436bad')
plt.bar(X_axis + 0.2, Z, 0.4, label='Predicted',color='#c5c9c7')
plt.legend(loc=2, prop={'size': 6.5})
# 仅修改此处的xticks第一个参数即可
plt.xticks(X_axis, X, rotation=60)
plt.xlabel("points")
plt.ylabel("Accuracy (%)")
plt.ylim(60,90)
plt.tight_layout() # 可选,避免小尺寸画布下x轴标签被截断
plt.show()

内容的提问来源于stack exchange,提问作者abaair davis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 10:57:08