2017-02-09 112 views
0

我有一个用熊猫绘制的条形图并想插入多个y轴。根据下面的代码生成图表(见图片链接),可以看出,前两个块对于缩放来说太小了。我怎样才能插入多个y轴,每个块都显示得很好? 使用axis.twinx()只将列值赋给单个y轴,但不是像我想要的那样将整个块赋值。用熊猫和多个y轴绘制

from matplotlib import pyplot as plt 
import pandas as pd 

g = ['A1', 'B2', 'C3'] 
params = ['one', 'two', 'three'] 
data = [[1, 3e-5, 400], [2, 5e-5, 300], [1.5, 4e-5, 350]] 

data_dict = dict(zip(g,data)) 
df=pd.DataFrame(data=data_dict,index=params,columns=g) 
fig0, ax0 = plt.subplots() 
ax1 = ax0.twinx() 

df.plot(kind='bar', ax=ax0) 

fig0.show() 

bar Chart plot with only one y-axis

+0

http://matplotlib.org/examples/api/two_scales.html [在具有不同比例的matplotlib多个轴(的 – Chuck

+0

可能的复制http://stackoverflow.com/questions/ 9103166/matplotlib中的多轴与不同刻度) – Chuck

+0

为什么不使用跨越几个数量级的数据的对数刻度? 'ax0.set_yscale('log')' – tom

回答

1

由于尺度三个PARAMS是如此完全不同,它可能是有意义的使用三种不同的次要情节。

from matplotlib import pyplot as plt 
import pandas as pd 

g = ['A1', 'B2', 'C3'] 
params = ['one', 'two', 'three'] 
data = [[1, 3e-5, 400], [2, 5e-5, 300], [1.5, 4e-5, 350]] 

data_dict = dict(zip(g,data)) 
df=pd.DataFrame(data=data_dict,index=params,columns=g) 

fig0, ax = plt.subplots(ncols=3, figsize=(10,4)) 

for i, p in enumerate(params): 
    df.loc[[p,p], :].plot(kind='bar', ax=ax[i],) 
    ax[i].set_xlim([-.5,.5]) 

plt.tight_layout() 
plt.show() 

enter image description here

+0

谢谢,也许这是最好的。为了更好的概述,我只是想知道是否可以将它放在一个块中。 – Lala

+0

您可以将它放在一个块(称为子图)中,但问题是放置轴的位置。 – ImportanceOfBeingErnest