matplotlib 在python中创建一个条形图,但用键分隔列

rslzwgfq  于 2022-11-15  发布在  Python
关注(0)|答案(2)|浏览(162)

我有一个 Dataframe ,看起来像这样

d = {'total_time':[1,2,3,4],
    'date': ['2022-09-11', '2022-09-11', '2022-09-13', '2022-09-13'],
    'key': ['A', 'B', 'A', 'B']}
df_sample = pd.DataFrame(data=d)
df_sample.head()

我想比较应该在x轴上的数据的total_time,但我想通过关联的“key”来比较这些值。
因此我应该有这样的东西

y53ybaqx

y53ybaqx1#

可以使用seborn并将键列传递给hue参数:

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sb

d = {'total_time':[1,2,3,4],
    'date': ['2022-09-11', '2022-09-11', '2022-09-13', '2022-09-13'],
    'key': ['A', 'B', 'A', 'B']}
df_sample = pd.DataFrame(data=d)

plt.figure()
sb.barplot(data = df_sample, x = 'date', y = 'total_time', hue = 'key')
plt.show()

请参阅海运文件:https://seaborn.pydata.org/generated/seaborn.barplot.html#seaborn.barplot

u4dcyp6a

u4dcyp6a2#

我对this example进行了调整,使其适合您的示例 Dataframe :

import numpy as np 
import matplotlib.pyplot as plt 
  
X_axis = np.arange(len(df_sample.date.unique()))
  
plt.bar(X_axis - 0.2, df_sample[df_sample.date=='2022-09-11']['total_time'], 0.4, label = '2022-09-11')
plt.bar(X_axis + 0.2, df_sample[df_sample.date=='2022-09-13']['total_time'], 0.4, label = '2022-09-13')
  

plt.xlabel("Key")
plt.ylabel("Total time")
plt.title("Total time per key")
plt.legend()
plt.show()

这个程式码片段会传回:

相关问题