假设我有如下定义的数据框架:
cat = ['games','games','home','home','home','food','food','food','food','food']
dates = ['2024-07-01','2021-31-1', '2021-04-1', '2021-05-1','2021-02-2', '2021-05-1','2021-01-2','2021-14-2','2021-03-3','2021-11-4']
nums = [137, 338, 52, 144, 100, 5, 72, 400, 100, 99]
df = pd.DataFrame({'cat':cat, 'dates':dates, 'nums':nums})我想要绘制每个cat --例如,为games、home和food分别创建一个nums与dates的图。
我通过做df.groupby('cat').plot(x = 'date')来获得它,它可以工作,但是我很难在每个子图上获得标题。或者有更简单的方法来实现这一点,并让每个情节标题都是cat的名称
发布于 2021-11-09 23:05:15
您可以遍历组,这样可以完全控制每个地块的轴、标题等。
import matplotlib.pyplot as plt
for key, gp in df.groupby('cat'):
gp.plot('dates')
plt.title(key)发布于 2021-11-10 00:04:42
最简单的方法是使用python 3.8.12**,(高级API for matplotlib ),它直接处理长表单数据。当使用sns.relplot创建图形级图时,为row指定的列将自动具有独特的值,如在python 3.8.12**,** pandas 1.3.4**,** matplotlib 3.4.3**,** seaborn 0.11.2中的图**matplotlib 3.4.3**,*seaborn 0.11.2。
import pandas as pd
import seaborn as sns
# convert the date column to a datetime dtype
df.dates = pd.to_datetime(df.dates, format='%Y-%d-%m')
# plot
p = sns.relplot(data=df, row='cat', x='dates', y='nums', kind='line', height=3, aspect=3, marker='o')

https://stackoverflow.com/questions/69906098
复制相似问题