我想要为红色 y 轴平均线添加一个标签,但它不会显示为标签。此外,数据集中的所有日期都是众包
这是我的代码:
def plot_data(measurement):
df = pd.read_csv("out.csv")
date = df["date"]
value = df[measurement]
plt.plot(date, value, label=host[0:7] + ", " + measurement + ", " + date_til[0:10] + " " + date_from[11:19] + "-" + date_til[11:19])
plt.title(measurement)
plt.xlabel("date")
plt.ylabel(measurement)
plt.legend()
plt.xticks(rotation=45)
average = df[measurement].mean()
plt.axhline(y=average, color='r', linestyle='-', label="average Ø ≈ " + str(average))
fig = plt.gcf()
fig.set_size_inches(18.5, 10.5, forward=True)
#today = date.today()
#print(today)
filename = "plots/plot_" + date_from[0:10] + ".png"
fig.savefig(filename, dpi=100)
print("\rPlot: Done ✔️")
最佳答案
为了在图例中显示average Ø ≈ ...
标签,您需要在ax.axhline
之后调用plt.legend
:
...
average = df[measurement].mean()
plt.axhline(y=average, color='r', linestyle='-', label="average Ø ≈ " + str(average))
plt.legend()
...
当您将 x 轴绘制为 str
代替 datetime
时,会发生 x 轴标签拥挤,因此您需要使用 pandas.to_datetime
进行此转换。首先:
df = pd.read_csv(r'data/data.csv')
fig, ax = plt.subplots()
ax.plot(df['date'], df['value'])
plt.show()
df = pd.read_csv(r'data/data.csv')
df['date'] = pd.to_datetime(df['date'])
fig, ax = plt.subplots()
ax.plot(df['date'], df['value'])
plt.show()
您可以通过以下方式进一步自定义 x 轴刻度:
import matplotlib.dates as md
# set spacing between ticks
ax.xaxis.set_major_locator(md.HourLocator(interval = 3))
# set tick label format
ax.xaxis.set_major_formatter(md.DateFormatter('%H:%M:%S'))
# set tick label rotation to 45°
plt.setp(ax.xaxis.get_majorticklabels(), rotation = 45)
关于Python绘图y轴平均标签不会显示并且日期都很拥挤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69280482/