我有这样的df:
Year Month Day FID__x Fuzzy_Anomaly
0 1984 5 17 3 0.048220
1 1984 7 4 3 -0.199825
2 1984 9 6 3 -0.528545
3 1985 5 20 3 -0.176771
4 1985 6 21 3 -0.345946
5 1986 7 26 3 -0.139717
6 1986 8 27 3 -0.071766
7 1987 8 30 3 -0.560004
8 1987 9 15 3 -0.498678
9 1987 10 1 3 -0.484233
10 1988 7 31 3 -0.243202
11 1989 7 2 3 -0.006413
12 1990 6 19 3 -0.538433
我希望刻度线是Year
,Month
和Day
的组合,间隔为5(我甚至没有尝试添加间隔要求下文)
我正在使用此代码进行绘图:
import matplotlib.pyplot as plt
from matplotlib.backends.backend_pdf import PdfPages
with PdfPages(r'F:\Sheyenne\Fishnet_ROI\graphs\delete.pdf') as pdf:
for i, group in df.groupby('FID__x'):
plt.figure()
Hurst_plots=group.plot(x=['Year', 'Month', 'Day'], y='Fuzzy_Anomaly',title=str(i)).get_figure()
plt.legend(loc='upper center', bbox_to_anchor=(0.5, 1.05), ncol=3,
fancybox=True, shadow=True)
labels=['19840517', '19840704', '19840906', '19850520', '19850621', '19860726', '19860827', '19870830', '19870915', '19871001', '19880731', '19890702', '19900619']
plt.xticks(labels)
plt.ylabel('Values')
plt.xlabel('Year')
pdf.savefig(Hurst_plots)
plt.close(Hurst_plots)
但结果图完全为空。
答案 0 :(得分:0)
我强烈建议您在尝试绘制数据之前先将数据格式化为您想要的格式。因此,我们假设您有一个名为df
的数据框,其中包含您列出的列(年,月,日,FID__x,模糊_Anomaly)。
首先创建一个新列,它是三个与日期相关的列的组合:
df['Date'] = df.apply(lambda row: '{}-{}-{}'.format(row['Year'], row['Month'], row['Day']), axis=1)
然后将Date
列设置为索引:
df.set_index('Date', inplace=True)
可以轻松创建您正在制作的情节:
df.groupby('FID__x')['Fuzzy_Anomaly'].plot()
Date
将自动成为您的x轴,它将指定适当的时间间隔并很好地格式化日期。然后,您可以像现在一样应用其他标签。
答案 1 :(得分:0)
我故意更改了您的数据集,因此它将包括1984年到2011年之间的年份。
In [9]: df
Out[9]:
Year Month Day FID__x Fuzzy_Anomaly
0 1984 5 17 3 0.048220
1 1985 5 20 3 -0.199825
2 1985 9 6 3 -0.528545
3 1985 10 20 3 -0.176771
4 1992 6 21 3 -0.345946
5 1994 7 26 3 -0.139717
6 1996 8 27 3 -0.071766
7 1998 8 30 3 -0.560004
8 2000 9 15 3 -0.498678
9 2003 10 1 3 -0.484233
10 2006 7 31 3 -0.243202
11 2009 7 2 3 -0.006413
12 2011 6 19 3 -0.538433
In [10]: xticks = [y for y in range(df.Year.min(), df.Year.max(), 5)]
In [11]: df.plot(x='Year', y='Fuzzy_Anomaly', xticks=xticks)
Out[11]: <matplotlib.axes._subplots.AxesSubplot at 0x48e0e80>
PS我更新了数据集,现在您在Year