python - 如何在 python 中更改折线图上的 x 轴?
问题描述
目前我有这个代码:
def graph_s(self):
ex_list = list()
time = list()
if(len(self.sheet) > 1):
for index, row in self.sheet.iterrows():
time.append(row['Month']/12 + row['Year'])
ex_list.append(float(row['grocery']) + float(row['transportation']) + float(row['leisure']) + float(row['utilities']) + float(row['savings']) + float(row['bills']))
z = sorted(zip(time,ex_list))
x=[i[0] for i in z]
y=[i[1] for i in z]
plt.plot(x, y)
plt.show()
else:
print('Sorry! There is not enough information to create a graph of you spending over time.')
但是,x 轴不是我想要的。我想在 x 轴上显示月份和年份,从最旧到新。当我运行代码时,它显示了下图。
解决方案
您可以从您的and中创建一个date
对象row['Month']
row['Year']
from datetime import date
(...)
ts = date(row['Year'], row['Month'], 1) # last value is the day
time.append(ts)
(...)
这是绘制时的示例(另请参见此处)
from datetime import date
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
y = list(range(6))
x = [date(2021,i,1) for i range(6)]
fig, ax = plt.subplots()
ax.plot(x,y)
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m'))
plt.show()
推荐阅读
- java - 有没有办法在无头铬中使用硒上传文件?
- sql - 我们可以将列名与日期连接起来吗
- android - Android AWS Lambda CognitoYourUserPoolsDemo
- visual-studio-2010 - 在纸上打印不同于水晶报表中的打印预览
- c++ - 当主 GUI 线程被阻塞时,如何从工作线程创建无模式对话框?
- java - 从单独的 JFrame 获取数据
- c - 以不同的名称导入函数
- node.js - 无法使用 mongodb 更新数据
- rasa-nlu - “CollectingDispatcher”对象没有属性“utter_response”
- google-cloud-endpoints - 错误:(gcloud.app.deploy)INVALID_ARGUMENT:网络“默认”不存在