我有一个示例数据框,如下所示:
Cat Mon Tues Weds Thurs Fri Sat Sun
red 23 34 1 10 30 500 9
yellow 23 34 11 31 22 20 9
blue 23 34 123 10 412 4 9
black 23 34 11 321 53 7 9
etc......
我正在尝试绘制每个“猫”栏在一周中每一天的发生情况。因此,将一周中每一天的发生次数计数绘制在子图上。
因此,例如在上述数据框中,将有4个子图。对于每个支持,我们将有7个小节代表相应天的计数。
如果有人有任何建议,那就太好了,谢谢。
答案 0 :(得分:2)
答案 1 :(得分:2)
好吧,答案已经被接受,但我认为无论如何我都会贡献这个解决方案。看到相同问题的多种解决方案总是很高兴。
我喜欢使用matplotlib直接进行绘制,因为更容易将图形调整为完全符合我们的期望。我也喜欢这种解决方案,因为很容易为猫上色(即使用红色条形图绘制红色猫)
让我们先导入数据:
import pandas as pd
from io import StringIO
import matplotlib.pyplot as plt
import numpy as np
df = pd.read_fwf(StringIO("""
Cat Mon Tues Weds Thurs Fri Sat Sun
red 23 34 1 10 30 500 9
yellow 23 34 11 31 22 20 9
blue 23 34 123 10 412 4 9
black 23 34 11 321 53 7 9
"""), header=1)
接下来,我们进行绘图,确保绘图上的颜色合理(即,红色猫的数量没有用蓝色条表示):
fig, ax = plt.subplots(2, 2)
color = ['C3', 'C8', 'C0', 'k']
ax = ax.reshape(4)
for i in range(4):
ax[i].bar(np.r_[:7], df.T[i][1:], color=color[i])
ax[i].set_xticks(np.r_[:7])
ax[i].set_xticklabels(['Mon', 'Tue', 'Wed', 'Thurs', 'Fri', 'Sat', 'Sun'], rotation=90)
fig.tight_layout()
所有这些给了我以下内容: