Python pandas.DataFrame.plot使用双轴和不均匀索引创建不正确的绘图 请考虑下面脚本生成的两个图。线图在图2中的位置不正确 导入matplotlib.pyplot作为plt 将numpy作为np导入 作为pd进口熊猫 np.random.seed(0x5eed) arr1=np.random.randint(5,10,4) arr2=np.random.randint(15,20,4) idx=[1,3,4,5] kwargs={'marker':'o','color':'C1'} 图1,ax11=plt.subplot() ax12=ax11.twinx() ax11.bar(idx,arr1) ax12.绘图(idx、arr2、**kwargs) 图1.savefig('fig1.png')) df=pd.DataFrame({'foo':arr1,'bar':arr2},index=idx) 图2,ax21=plt.子批次() ax22=ax21.twinx() df['foo'].plot.bar(ax=ax21) df['bar'].绘图线(ax=ax22,**kwargs) 图2.savefig('fig2.png'))
Python pandas.DataFrame.plot使用双轴和不均匀索引创建不正确的绘图 请考虑下面脚本生成的两个图。线图在图2中的位置不正确 导入matplotlib.pyplot作为plt 将numpy作为np导入 作为pd进口熊猫 np.random.seed(0x5eed) arr1=np.random.randint(5,10,4) arr2=np.random.randint(15,20,4) idx=[1,3,4,5] kwargs={'marker':'o','color':'C1'} 图1,ax11=plt.subplot() ax12=ax11.twinx() ax11.bar(idx,arr1) ax12.绘图(idx、arr2、**kwargs) 图1.savefig('fig1.png')) df=pd.DataFrame({'foo':arr1,'bar':arr2},index=idx) 图2,ax21=plt.子批次() ax22=ax21.twinx() df['foo'].plot.bar(ax=ax21) df['bar'].绘图线(ax=ax22,**kwargs) 图2.savefig('fig2.png')),python,pandas,matplotlib,Python,Pandas,Matplotlib,图1(预期): 图2(意外): 经过一些调查,我发现以下条件重现了这个问题 同时使用条形图和折线图(fig2如果两个图都是折线图则正确) 索引不均匀(idx=range(4)解决了这个问题) 我发现了,但我不是这样df.index属于Int64Index类。这是一种预期的行为还是我应该向问题跟踪者报告的事情?条形图是分类的,因此条形图始终位于位置0,1,。。。N-1.@ImportanceOfBeingErnest解释了问题和正在旋转的xtick标签,谢谢。是否不可能将其数字化?在我的实
图1
(预期):
图2
(意外):
经过一些调查,我发现以下条件重现了这个问题
- 同时使用条形图和折线图(
如果两个图都是折线图则正确)fig2
- 索引不均匀(
解决了这个问题)idx=range(4)
我发现了,但我不是这样
df.index
属于Int64Index
类。这是一种预期的行为还是我应该向问题跟踪者报告的事情?条形图是分类的,因此条形图始终位于位置0,1,。。。N-1.@ImportanceOfBeingErnest解释了问题和正在旋转的xtick标签,谢谢。是否不可能将其数字化?在我的实际案例中,数据帧有许多列可以绘制为条形图,因此非常感谢pandas解决方案/解决方案(我自己也尝试找到一种方法)。是的,使用matplotlib图表代替<代码>轴条形图(…)和ax.plot(…)