如何在每月10日之间用条形图绘制图表?

2024-05-15 08:56:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一张桌子:

import pandas as pd

df = pd.DataFrame([
("2018-06-10", 10),
("2018-07-10", 25),
("2018-08-10", 40),
("2018-09-10", 52),
("2018-10-10", 65),
("2018-11-10", 78),
("2018-12-10", 98),
("2019-01-10", 122),
("2019-02-10", 132),
("2019-03-10", 150),
("2019-04-10", 165),
("2019-05-10", 177)],
columns=["date", "values"])

我需要在matplotlib中绘制一个条形图,包括以下内容:

  1. 酒吧将设在每月10日之间

  2. 每根钢筋的高度应等于表中相邻值的差值

要使图表看起来像这样:

Example of desired chart


Tags: columnsimportdataframepandasdfdatematplotlibas
2条回答

试试这个:

df["diff"]=df["values"].diff()

df.plot(kind="bar",x="date",y="diff")

plt.show()

您希望避免使用“values”作为列名,因为我相信这是pandas中为所有寄存器保留的。所以,如果你做df.values,你会得到比那列更多的值。您可能还希望日期是垂直的,所以我在“plt.xticks”中添加了rotation=“vertical”,但如果不是,您可以删除它

这对我有用,告诉我你有什么问题

import pandas as pd 
import numpy as np 
import matplotlib.pyplot as plt 

df = pd.DataFrame([ 
("2018-06-10", 10), 
("2018-07-10", 25), 
("2018-08-10", 40), 
("2018-09-10", 52), 
("2018-10-10", 65), 
("2018-11-10", 78), 
("2018-12-10", 98), 
("2019-01-10", 122), 
("2019-02-10", 132), 
("2019-03-10", 150), 
("2019-04-10", 165), 
("2019-05-10", 177)], 
columns=["date", "value"]) 

objects = df.date 
y_pos = np.arange(len(objects)) 
performance = list(df.value.diff().dropna())+[0]

plt.bar(y_pos, performance, 1, align='edge', alpha=0.5) 
plt.xticks(y_pos, objects, rotation="vertical") 
plt.ylabel('Usage') 
plt.title('Programming language usage') 

plt.show()

编辑,没有看到你提到你需要区别的部分。我还加入了酒吧(我想你也需要?),把日期推到了最后

相关问题 更多 >