python - 我无法更改绘图中 x 标签的值
问题描述
我想绘制速度-时间图,我想像这样将 x 标签更改为 2012、2013、2014、2015、2016
请问你能帮帮我吗。我应该怎么办 ?
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
data=pd.read_excel("ts80.xlsx")
Date=data["Date"]
Speed=data["Speed"]
timestamp = pd.to_datetime(Date[0:]).dt.strftime("%Y%m%d")
fig, ax = plt.subplots(figsize=(13,6))
ax.plot(timestamp, Speed)
plt.xlabel("Time")
plt.ylabel("80Avg[m/s]")
plt.title("Mean Wind Speed at 80m")
ax.xaxis.set_minor_formatter(mdates.DateFormatter("%Y"))
plt.xticks([2012, 2013, 2014, 2015, 2016])
plt.show()
你能写出正确的代码吗?
解决方案
问题是您将日期字符串转换为日期,然后再转换回字符串。不要那样做。将它们保留为日期,然后DataFormatter
在 x 轴上使用正确的日期。
import numpy
from matplotlib import pyplot
from matplotlib import dates
import pandas
data = pd.read_excel("ts80.xlsx")
t = pd.to_datetime(data["Date"])
x = data["Speed"]
fig, ax = pyplot.subplots()
ax.plot(t, x)
ax.xaxis.set_major_formatter(dates.DateFormatter("%Y"))
ax.xaxis.set_major_locator(dates.YearLocator())
plt.show()
您要使用适当的格式化程序和定位器的原因是它解决了此代码演变为具有一长串数据的交互式绘图并且用户可以平移/缩放的一般情况。在这种情况下,硬编码的刻度或刻度标签会完全崩溃。
推荐阅读
- odata - 尝试在 Azure 逻辑应用中为特定于 D365 的数据类型开发动态筛选器查询时,如何解决不兼容的类型错误?
- php - 文件预览不起作用 Vtiger 7.3 - 我尝试了 3 台不同的服务器进行全新安装
- rust - 为什么编译器说调用在关联类型中是不明确的,而实际上不是?
- javascript - 当我在 index.html 文档中添加任何新部分时,它将如何动态生成一个新的导航项
- mysql - 多个动态 FIND_IN_SET 搜索
- node.js - setInterval() 方法对长时间超时有效吗?
- jestjs - 我可以使用 Jest 测试中的 Jasmine 函数吗?
- swift - 如何捕获闭包的返回值
- sql - SQL 查找满足至少一个条件的元组列表
- ruby-on-rails - 渲染具有未知/无限嵌套的分层列表视图