Python 使用可视化工具绘制多个子地块

Python 使用可视化工具绘制多个子地块,python,pandas,matplotlib,Python,Pandas,Matplotlib,我使用的是来自的IGN review数据集,我试图得到给定发布日期的每个任天堂平台x周的频率图,下面是代码 import pandas as pd df = pd.read_csv("ign.csv") datetime_df = pd.DataFrame({'year': df["release_year"], 'month': df["release_month"], 'day': df["release_day"]

我使用的是来自的IGN review数据集,我试图得到给定发布日期的每个任天堂平台x周的频率图,下面是代码

import pandas as pd
df = pd.read_csv("ign.csv")
datetime_df = pd.DataFrame({'year': df["release_year"],
                   'month': df["release_month"],
                   'day': df["release_day"]})
df["date"] = pd.to_datetime(datetime_df)

df["week_day"] = df["date"].apply(lambda x : x.weekday_name)

nintendo = ['Wii','Nintendo DS','Nintendo 3DS','Nintendo DS',
            'Game Boy', 'Game Boy Color','Nintendo 64DD','Game Boy Advance',
            'New Nintendo 3DS','GameCube','Nintendo DSi','Super NES']

base_nintendo = df[df["platform"].isin(nintendo)]

data = base_nintendo.groupby(["platform","week_day"]).size()

data =data.unstack().fillna(0).stack()

data
对于输出:

platform          week_day 
Game Boy          Friday         5.0
                  Monday         5.0
                  Saturday       0.0
                  Sunday         0.0
                  Thursday       0.0
                  Tuesday        4.0
                  Wednesday      8.0
Game Boy Advance  Friday       131.0
                  Monday       109.0
                  Saturday       0.0
                  Sunday         1.0
                  Thursday     153.0
                  Tuesday      123.0
                  Wednesday    106.0
Game Boy Color    Friday        89.0
                  Monday        43.0
                  Saturday       1.0
                  Sunday         1.0
                  Thursday      55.0
                  Tuesday       78.0
                  Wednesday     89.0
GameCube          Friday        99.0
                  Monday       100.0
                  Saturday       3.0
                  Sunday         0.0
                  Thursday      83.0
                  Tuesday      124.0
                  Wednesday    100.0
我试过做:

data.groupby("platform").plot("barh")
但它只给了我最后一个平台(wii):


请注意,在绘图上方,每个组都有一行,例如
Super-NES….
?这些是其他绘图的
matplotlib.AxesSubplot
对象

实际上,为每个组返回一个
matplotlib.AxesSubplot
对象。另一方面,ipython笔记本只显示了你的最后一个情节

因此,解决方案是:将
data.groupby(“平台”).plot(“barh”)更改为
my_axes=data.groupby(“平台”).plot(“barh”)
,然后逐个处理它们,例如

for ax in my_axes:
    ax.savefig(filename)
您可以这样做:

gp = data.groupby("platform")
f, axes = plt.subplots(5, 5)  # or any other large enough subplot grid
for k, ax in zip(gp.groups, axes.ravel()):
    gp.get_group(k).plot('barh', ax=ax)

请注意,在绘图上方,每个组都有一行,例如
Super-NES….
?这些是其他绘图的
matplotlib.AxesSubplot
对象

实际上,为每个组返回一个
matplotlib.AxesSubplot
对象。另一方面,ipython笔记本只显示了你的最后一个情节

因此,解决方案是:将
data.groupby(“平台”).plot(“barh”)更改为
my_axes=data.groupby(“平台”).plot(“barh”)
,然后逐个处理它们,例如

for ax in my_axes:
    ax.savefig(filename)
您可以这样做:

gp = data.groupby("platform")
f, axes = plt.subplots(5, 5)  # or any other large enough subplot grid
for k, ax in zip(gp.groups, axes.ravel()):
    gp.get_group(k).plot('barh', ax=ax)

一种解决方案是使用
seaborn
并绘制
barh

data = data.unstack().fillna(0).stack()
data = data.reset_index().rename(columns={0:'value'})

import seaborn as sns
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(10,7))
sns.barplot(y='platform',x='value', hue='week_day', data=data, orient='h')
plt.show()

一种解决方案是使用
seaborn
并绘制
barh

data = data.unstack().fillna(0).stack()
data = data.reset_index().rename(columns={0:'value'})

import seaborn as sns
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(10,7))
sns.barplot(y='platform',x='value', hue='week_day', data=data, orient='h')
plt.show()

它起作用了,但它被污染了,它在Y轴上给了我,工作日和平台的名称。它起作用了,但它被污染了,它在Y轴上给了我,工作日和平台的名称。谢谢,伙计,我想为每个平台做一个唯一的条形图,但提前谢谢!刚刚使用sns.catplot()sns.catplot(y='week\u day',x='value',col='platform',col\u wrap=4,hue='week\u day',data=data,kind=“bar”)工作正常谢谢你,我想为每个平台制作一个唯一的条形图,但提前谢谢你!刚刚使用sns.catplot()sns.catplot(y='week\u day',x='value',col=“platform”,col\u wrap=4,hue='week\u day',data=data,kind=“bar”)实现了