在matplotlib中绘图并固定x轴

p1iqtdky  于 2023-08-06  发布在  其他
关注(0)|答案(1)|浏览(109)

我正在尝试使用matplotlib在Python中创建一个图。我先写下面的代码:

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv(r'Plot_Example.csv',sep=';')
df = df.set_index("Date")

fig, ax = plt.subplots() 
fig.set_size_inches(18.5, 18.5)
ax.plot(df["Yt"], label="Yt",color='blue') 
ax.plot(df["X1t"], label="X1t",color='red') 
ax.plot(df["X2t"],
label="X2t",color='yellow') 
ax.legend() fig.savefig('test3png.png',dpi=100)

字符串
更多信息:

df.info()

<class 'pandas.core.frame.DataFrame'> Index: 96 entries, 1/1/1949 to
1/12/1956 Data columns (total 3 columns):  #   Column  Non-Null Count 
Dtype
---  ------  --------------  -----  0   Yt      96 non-null     int64  1   X1t     96 non-null     int64  2   X2t     96 non-null     int64
dtypes: int64(3) memory usage: 2.6+ KB


一切顺利,我得到以下图表:


的数据
问题是我无法看到横轴中的日期值。有没有办法设置轴的格式?
我尝试了以下几点:

import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.dates import YearLocator, DateFormatter

df = pd.read_csv(r'Plot_Example.csv',sep=';')
df["Date"] = pd.to_datetime(df["Date"])
df = df.set_index("Date")

fig, ax = plt.subplots() 
fig.set_size_inches(18.5, 18.5)
ax.plot(df["Yt"], label="Yt",color='blue') 
ax.plot(df["X1t"],
label="X1t",color='red') 
ax.plot(df["X2t"], label="X2t", color='yellow') 
years = mdates.YearLocator() 
yearsFmt = mdates.DateFormatter('\n%Y') ?
ax.xaxis.set_major_locator(years)
ax.xaxis.set_major_formatter(yearsFmt) 
ax.legend()
fig.savefig('test3png.png', dpi=100)


我得到了很好的x轴格式,但是在y轴上绘制时间序列时得到了错误的结果。



如何从原始图像中格式化x轴或在第二个图像中修复时间序列绘图?

b5lpy0ml

b5lpy0ml1#

你只能在x轴上保留第n个日期(在下面的代码中,我选择了n=10)。此外,您可以旋转标签以避免重叠:

tick_spacing = 10
plt.xticks(
    ax.get_xticks()[::tick_spacing],
    ax.get_xticklabels()[::tick_spacing],
    rotation=45,
    ha='right'
)

字符串

相关问题