gmarsi Asked: 2020-08-15 06:59:43 +0800 CST 2020-08-15 06:59:43 +0800 CST 2020-08-15 06:59:43 +0800 CST 使用 matplotlib 在条形图中指示数据 772 我正在使用一个表格,该表格指示一天中的数字、一天中的小时和访问次数 我想创建一个指示每小时访问次数的条形图(如图中的那个) 但是我怎样才能在每个条形图中标出小时数呢?类似于我对油漆所做的事情,但在任何时候,当然。 python 1 Answers Voted Best Answer FJSevilla 2020-08-15T09:13:46+08:002020-08-15T09:13:46+08:00 您还可以使用matplotlib.pyplot.text或matplotlib.pyplot.annotate在每列上方添加所需的文本。 我假设您的数据位于 Pandas DataFrame 中,因此您可以使用它pandas.DataFrame.plot.bar来轻松创建图表,尽管如果matplotlib.pyplot.bar直接使用这个想法是相同的。 import pandas as pd import matplotlib.pyplot as plt data = {"Dia": (14, 14, 14, 12, 12, 12, 12, 12), "Hora": (16, 14, 13, 12, 23, 22, 21, 20), "Visita": (5, 2, 6, 19, 8, 47, 13, 51)} visitsPerDay = pd.DataFrame(data) ax = visitsPerDay.plot.bar("Dia", "Visita") for i, bar in enumerate(ax.patches): ax.text(bar.get_x() + bar.get_width() / 2, bar.get_height() + 1.5, f"{visitsPerDay['Hora'][i]}:00", horizontalalignment= 'center', verticalalignment='bottom', fontsize=10, rotation=90, color='dimgrey') ax.set_xlabel("Número del dia") ax.set_ylabel("Visitas") ax.margins(x=0, y=0.3) plt.show() 由于您显然将时间表示为整数,因此我只是使用字符串文字格式f"{visitsPerDay['Hora'][i]}:00"将相应的字符串分配给每个斜杠,如果您使用的是 Python < 3.6,则可以使用"{}:00".format(visitsPerDay['Hora'][i]).
您还可以使用
matplotlib.pyplot.text
或matplotlib.pyplot.annotate
在每列上方添加所需的文本。我假设您的数据位于 Pandas DataFrame 中,因此您可以使用它
pandas.DataFrame.plot.bar
来轻松创建图表,尽管如果matplotlib.pyplot.bar
直接使用这个想法是相同的。由于您显然将时间表示为整数,因此我只是使用字符串文字格式
f"{visitsPerDay['Hora'][i]}:00"
将相应的字符串分配给每个斜杠,如果您使用的是 Python < 3.6,则可以使用"{}:00".format(visitsPerDay['Hora'][i])
.