我有桌子:
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中绘制条形图:
酒吧将位于每月的10日之间;
每个小节的高度将等于表中相邻值的差。
要使图表看起来像这样:
答案 0 :(得分:1)
尝试一下:
df["diff"]=df["values"].diff()
df.plot(kind="bar",x="date",y="diff")
plt.show()
答案 1 :(得分:1)
您要避免使用“值”作为列名,因为我认为这在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()
已编辑,没有看到您提到需要区别的部分。我还把这些酒吧放在一起(我认为您也需要?),并将日期推到最后。