在matplotlib中用两个轴绘制三个类别

时间:2018-10-15 21:18:35

标签: python pandas matplotlib

我正在使用pandas和matplotlib的组合来绘制几个类别的三个值。我希望其中一个图具有自己的轴,而另两个图共享一个轴。

关闭,但说明了为什么需要双轴的问题:

  pd.DataFrame([[1,2,3],[500,600,700],[500,700,650]],columns = ['foo','bar','baz'],
             index = ['a','b','c'])。T.plot(kind ='bar')
 

”问题“

相反,我想要 a 条的第二个轴。我的尝试:

  smol = pd.DataFrame([[1,2,3],[500,600,700],[500,700,650]],columns = ['foo','bar','baz'],
        index = ['a','b','c'])。T

fig = plt.figure(figsize =(10,5))#创建matplotlib图

ax = fig.add_subplot(111)#创建matplotlib轴
ax2 = ax.twinx()#创建另一个与x共享相同x轴的轴。

smol ['a']。plot(kind ='bar',color ='red',ax = ax,width = 0.3,
                    位置= 1,edgecolor =“黑色”)
smol ['b']。plot(kind ='bar',color ='blue',ax = ax2,width = 0.3,
                 位置= 0,edgecolor =“黑色”)

ax.set_ylabel('小比例尺')
ax2.set_ylabel('大比例尺')

plt.show()
 

”尝试“

不幸的是,添加了

  smol ['c']。plot(kind ='bar',color ='green',ax = ax2,width = 0.3,
                 位置= 0,edgecolor =“黑色”)
 

产生:

”

我如何让 b c 共享一个轴,但是却像在第一次尝试中那样彼此相邻出现?

1 个答案:

答案 0 :(得分:2)

我使用了import java.util.Scanner; import java.util.concurrent.TimeUnit; public class ChildClass{ public static void main(String[] args) throws InterruptedException { Scanner scanner = new Scanner(System.in); int a = 0; while (a == 0) a = scanner.nextInt(); int b = 0; while (b == 0) b = scanner.nextInt(); TimeUnit.SECONDS.sleep(1); System.out.print(a + b); System.out.flush(); } } 关键字。代码也大大缩短了

secondary_y

enter image description here