Python Matplotlib:在双y轴上打印打印未对齐

Python Matplotlib:在双y轴上打印打印未对齐,python,pandas,matplotlib,plot,Python,Pandas,Matplotlib,Plot,我正在尝试使用matplotlib将两个数据集绘制成一个绘图。两个图中的一个在x轴上未对齐1。 这篇文章大致概括了这个问题。我需要调整什么才能使方框图进一步向左 导入matplotlib.pyplot作为plt 作为pd进口熊猫 将numpy作为np导入 标题=[“nlnd”、“nlmd”、“nlhd”、“mlnd”、“mlmd”、“mlhd”、“hlnd”、“hlmd”、“hlhd”] plotData=pd.DataFrame(np.random.rand(25,9),columns=tit

我正在尝试使用matplotlib将两个数据集绘制成一个绘图。两个图中的一个在x轴上未对齐1。 这篇文章大致概括了这个问题。我需要调整什么才能使方框图进一步向左

导入matplotlib.pyplot作为plt
作为pd进口熊猫
将numpy作为np导入
标题=[“nlnd”、“nlmd”、“nlhd”、“mlnd”、“mlmd”、“mlhd”、“hlnd”、“hlmd”、“hlhd”]
plotData=pd.DataFrame(np.random.rand(25,9),columns=titles)
故障率=局部数据帧(np.random.rand(9,1),索引=标题)
颜色={'box':'DarkGreen','skirs':'DarkOrange','medians':'DarkBlue',
“caps”:“Gray”}
图=plt.图()
ax1=图add_子批次(111)
ax2=ax1.twinx()
plotData.plot.box(ax=ax1,color=color,sym='+'))
failureRates.plot(ax=ax2,color='b',legend=False)
ax1.set_ylabel('秒')
ax2.set_ylabel(%中的故障率)
plt.xlim(-0.7,8.7)
ax1.set_xticks(范围(len(titles)))
ax1.设置标签(标题)
图1紧_布局图()
图2(图3)
实际结果。请注意,它只有8个方框图,而不是9个,并且它们从索引1开始


您可以在x轴上指定要进行方框图的位置。由于您有9个框,请使用以下生成下图的选项

plotData.plot.box(ax=ax1, color=color, sym='+', positions=range(9))

问题在于
box()
plot()
工作方式之间不匹配-
box()
从x位置1开始,而
plot()
取决于数据帧的索引(默认从0开始)。由于指定了
plt.xlim(-0.7,8.7)
,第9个绘图被截断,因此只有8个绘图。有几种简单的方法可以解决这个问题,如图所示,您可以显式设置箱线图的位置。另一种方法是在构建数据帧时将
failureRates
dataframe的索引更改为从1开始,即

failureRates = pd.DataFrame(np.random.rand(9, 1), index=range(1, len(titles)+1))
请注意,对于问题MCVE,您不需要指定
xticks
xlim
,但您可能需要指定完整的代码