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
相关产品推荐
相关产品推荐

