Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于月列的多重条形图_Python_Python 3.x_Pandas_Matplotlib_Seaborn - Fatal编程技术网

Python 基于月列的多重条形图

Python 基于月列的多重条形图,python,python-3.x,pandas,matplotlib,seaborn,Python,Python 3.x,Pandas,Matplotlib,Seaborn,我需要12个绘图(fig,axes=plt.子绘图(4,3)) 我需要一个条形图,其中x轴是航空公司,y轴是他们每个月的计数 i、 e第1个月-->x轴class='Airline'和y轴class='counts',并且如果每个条的颜色不同,也要感谢 同样地,我每个月都需要这样的图(12个图) 我试过这样的方法 df.groupby(df.index)['Airline'].plot(kind='bar') 下图仅包含7个月的时间 但这只返回一个包含所有拟合值的单一绘图,这不是我的预期输出

我需要12个绘图(
fig,axes=plt.子绘图(4,3)
) 我需要一个条形图,其中x轴是航空公司,y轴是他们每个月的计数

i、 e第1个月-->
x轴class='Airline'
y轴class='counts'
,并且如果每个条的颜色不同,也要感谢

同样地,我每个月都需要这样的图(12个图)

我试过这样的方法

df.groupby(df.index)['Airline'].plot(kind='bar')
下图仅包含7个月的时间


但这只返回一个包含所有拟合值的单一绘图,这不是我的预期输出

这就是你要找的:

# import matplotlib and seaborn for data visualization.
import matplotlib.pyplot as plt
import seaborn as sns

# Load dataframe.
df = pd.DataFrame(...)

# Plot one bar for each airline, grouped by month.
sns.barplot(x="month", y="counts", hue="Airline", data=df)
plt.show()
你会得到这样的结果:


查看。

我没有收到您的原始数据集,但以下是如何绘制您的内容:)


如果您复制/粘贴此脚本,它将运行。然后,您只需要将数据集提供给它。您可以根据如我所示的名称指定颜色,也可以这样标记它们(这就是为什么这样做的函数很好,所以您不必复制/粘贴12次)。

我正在处理自己生成的数据集,所以它不可能是完美的。但是,它也应该适用于您的数据

我正在处理由以下内容生成的数据:

#import all needed libraries 
airline_names = ['BRITISH AIRWAYS PLC','VIRGIN ATLANTIC AIRWAYS LTD','BRITANNIA AIRWAYS AND THOMSONFLY','BRITISH AIRWAYS (EURO OPS) LGW','MONARCH AIRLINES','AIR EUROPE','FIRST CHOICE AIRWAYS LTD','CALEDONIAN AIRWAYS','BMI BRITISH MIDLAND','KLM UK LTD','ANGLO CARGO','MY TRAVEL AIRWAYS UK','LEISURE INTERNATIONAL','EXCALIBUR AIRWAYS','HEAVYLIFT','GB AIRWAYS LTD','NOVAIR INTERNATIONAL','BERLIN EUROPEAN UK','HUNTING CARGO AIRLINES LTD','TRADEWINDS AIRWAYS','LOGANAIR','DUO AIRWAYS LTD','BRITISH WORLD AIRLINES LTD','RYANAIR-EUROPE','BRITISH AIRWAYS CITIEXPRESS LTD','AIR FOYLE'] 
months = np.random.choice(range(1,13), size=40, replace=True)
counts = np.random.choice(range(200,800), size=40, replace=True)
airlines = np.random.choice(airline_names, size=40, replace=True)

df = pd.DataFrame({"Airline":airlines,"month":months,"counts":counts}) 
我假设一个月内只有一家航空公司,所以我没有计算这个月的总数。在我的数据集中,一个月内可能会出现相同的航空公司。所以,请记住这一点

grouped = df.groupby('month')
fig = plt.figure(figsize=(18,15))
i=0
import random as rand
#create random rgb colors assigned to airline 
colors = {k: (rand.random(),rand.random(),rand.random()) for k in airline_names}
for month, values in grouped:
    i += 1
    ax = fig.add_subplot(4,3,i)
    colors_list = [colors[airline] for airline in values["Airline"]]
    values.plot.bar("Airline", "counts",ax=ax,color=colors_list,xticks=[],title=month)
    #As a xlabel I printed only 7 chars, otherwise it would be mess
    ax.set_xticklabels(values["Airline"].str[0:7])
plt.show()
输出如下所示:


我希望这是你所期待的

我不确定你想要什么样的输出,但也许它会和我在的帖子类似?在那篇文章中,我还提供了其他几个链接,指向绘制多个图形的示例bars@Reedinationer我已经用更多信息更新了这个问题。我没有要显示的示例输出,因为我没有得到所需的输出,所以我已经解释了。您是否可以发布您正在使用的数据?@Reedinationer是的。如果每一条都是不同的颜色而不是单一的颜色,也请欣赏。很抱歉,不允许我共享数据。您可以尝试以上几个采样点。
#import all needed libraries 
airline_names = ['BRITISH AIRWAYS PLC','VIRGIN ATLANTIC AIRWAYS LTD','BRITANNIA AIRWAYS AND THOMSONFLY','BRITISH AIRWAYS (EURO OPS) LGW','MONARCH AIRLINES','AIR EUROPE','FIRST CHOICE AIRWAYS LTD','CALEDONIAN AIRWAYS','BMI BRITISH MIDLAND','KLM UK LTD','ANGLO CARGO','MY TRAVEL AIRWAYS UK','LEISURE INTERNATIONAL','EXCALIBUR AIRWAYS','HEAVYLIFT','GB AIRWAYS LTD','NOVAIR INTERNATIONAL','BERLIN EUROPEAN UK','HUNTING CARGO AIRLINES LTD','TRADEWINDS AIRWAYS','LOGANAIR','DUO AIRWAYS LTD','BRITISH WORLD AIRLINES LTD','RYANAIR-EUROPE','BRITISH AIRWAYS CITIEXPRESS LTD','AIR FOYLE'] 
months = np.random.choice(range(1,13), size=40, replace=True)
counts = np.random.choice(range(200,800), size=40, replace=True)
airlines = np.random.choice(airline_names, size=40, replace=True)

df = pd.DataFrame({"Airline":airlines,"month":months,"counts":counts}) 
grouped = df.groupby('month')
fig = plt.figure(figsize=(18,15))
i=0
import random as rand
#create random rgb colors assigned to airline 
colors = {k: (rand.random(),rand.random(),rand.random()) for k in airline_names}
for month, values in grouped:
    i += 1
    ax = fig.add_subplot(4,3,i)
    colors_list = [colors[airline] for airline in values["Airline"]]
    values.plot.bar("Airline", "counts",ax=ax,color=colors_list,xticks=[],title=month)
    #As a xlabel I printed only 7 chars, otherwise it would be mess
    ax.set_xticklabels(values["Airline"].str[0:7])
plt.show()