Python 平行图中的相同Y轴
我有以下代码:Python 平行图中的相同Y轴,python,pandas,matplotlib,seaborn,Python,Pandas,Matplotlib,Seaborn,我有以下代码: import pandas as pd import matplotlib.pyplot as plt import seaborn as sns;sns.set_style("whitegrid") import seaborn as sns; sns.set(style="ticks") x = pd.read_csv("C:\\Users\dell\\Desktop\\delikatesy_owoce_i_warzywa(wyczyszczone).csv", sep='
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns;sns.set_style("whitegrid")
import seaborn as sns;
sns.set(style="ticks")
x = pd.read_csv("C:\\Users\dell\\Desktop\\delikatesy_owoce_i_warzywa(wyczyszczone).csv", sep=',')
x2 = x[x.grupa.str.contains('RAZEM') == False]
del x2['rok']
del x2['miesiac']
del x2['dzien_tygodnia_liczba']
del x2['dzien']
del x2['data2']
del x2['Unnamed: 0']
x2['data'] = pd.to_datetime(x2['data'])
x3 = x2[x2["data"].isin(pd.date_range('2017-10-01','2017-10-18'))]
x4 = x3.groupby('grupa')['marza_netto'].agg({"marza_netto2": 'size'}).join(x3.groupby('grupa').sum()).reset_index()
x4.insert(4,'marza_procent2', x4['marza_procent']/x4['marza_netto2'])
del x4['marza_netto2']
del x4['marza_procent']
x4 = x4.set_index('grupa').T.rename_axis('DANE').reset_index().rename_axis(None,1)
flatui = ["#9b59b6", "#3498db", "#95a5a6", "#e74c3c", "#34495e", "#2ecc71"]
fig, ax = plt.subplots(1,3)
g1 = sns.barplot(x="DANE", y="OWOCE",
palette=sns.color_palette(flatui),data=x4,ci=None, ax=ax[0])
g2 = sns.barplot(x="DANE", y="WARZYWA",
palette=sns.color_palette(flatui),data=x4,ci=None, ax=ax[1])
g3 = sns.barplot(x="DANE", y="NASIONA",
palette=sns.color_palette(flatui),data=x4,ci=None, ax=ax[2])
sns.despine()
g1.figure.set_size_inches(8,6)
g2.axes.set_title('Wpływ procentu marży na wielkosć sprzedaży',
fontsize=15,color="b",alpha=0.3)
g1.set_xlabel("OWOCE",size = 15,color="g",alpha=0.5)
g2.set_xlabel("WARZYWA",size = 15,color="g",alpha=0.5)
g3.set_xlabel("NASIONA",size = 15,color="g",alpha=0.5)
g1.set_ylabel("",size = 20,color="r",alpha=0.5)
g2.set_ylabel("",size = 20,color="r",alpha=0.5)
g3.set_ylabel("",size = 20,color="r",alpha=0.5)
plt.setp(g1.get_xticklabels(), rotation=-45)
plt.setp(g2.get_xticklabels(), rotation=-45)
plt.setp(g3.get_xticklabels(), rotation=-45)
我分别比较了三个产品组。我不知道如何使每个图的Y轴上的值彼此成比例,并与其他图的结果相关。因为在这种形状中,结果并不代表产品之间的实际比例
另外,我在代码中使用g1、g2、g3的地方是否可以放在一些循环中?因为在这种形式下,代码似乎并不优雅:)
我将非常感谢所有建议。您可以将
sharey=True
传递到plt.subplot
有关更多信息,请参阅以下文档:
关于将子批次放入循环的第二个问题,可以使用enumerate
循环索引递增的列列表:
for index,name in enumerate(['OWOCE','WARZYWA','NASIONA']):
gg = sns.barplot(x="DANE", y=name, palette=sns.color_palette(flatui),data=x4,ci=None, ax=ax[index])
gg.set_xlabel(name,size = 15,color="g",alpha=0.5)
gg.set_ylabel("",size = 20,color="r",alpha=0.5)
plt.setp(gg.get_xticklabels(), rotation=-45)
if index==1:
gg.axes.set_title('Wpływ procentu marży na wielkosć sprzedaży',
fontsize=15,color="b",alpha=0.3)
太好了,我所需要的一切。非常感谢!:)