【发布时间】:2020-09-16 00:25:41
【问题描述】:
我有以下公式:
ax = plt.gca()
datamax.plot(kind='line',x='Date',y='Data_Value',color='red',ax=ax)
datamin.plot(kind='line',x='Date',y='Data_Value', color='blue',ax=ax)
plt.ylabel("Temperature (degrees C)",color='navy')
plt.xlabel("Date",color='navy',labelpad=15)
plt.title('Record high and low temperatures by day (2005-2014)', alpha=1.0,color='brown')
ax.legend(loc='upper center', bbox_to_anchor=(0.5, -0.35),
fancybox=False,labels=['Record high','Record low'])
plt.xticks(rotation=30)
plt.gca().fill_between(datamax['Date'],datamax['Data_Value'],datamin['Data_Value'],facecolor='yellow',alpha=0.25)
plt.show()
我想在下面折线图的两条线之间进行填充,但不知何故我的代码无法正常工作。谁能帮助理解为什么?
我认为 fill_between 命令会起作用,但由于某种原因它不是...
当我尝试时:
ax.fill_between(datamax['Date'],datamax['Data_Value'],datamin['Data_Value'],facecolor='yellow',alpha=0.25)
我收到错误消息:
输入类型不支持 ufunc 'isfinite',并且根据转换规则 ''safe'' 无法安全地将输入强制转换为任何支持的类型
我的图表目前如下所示:
数据框 datamax 如下所示:
Date ID Element Data_Value
0 2005-01-01 USW00094889 TMAX 156
1 2005-01-02 USW00094889 TMAX 139
2 2005-01-03 USW00094889 TMAX 133
3 2005-01-04 USW00094889 TMAX 39
4 2005-01-05 USW00094889 TMAX 33
5 2005-01-06 USW00094889 TMAX 0
6 2005-01-07 USW00094889 TMAX 6
7 2005-01-08 USW00094889 TMAX 17
8 2005-01-09 USW00094889 TMAX 28
9 2005-01-10 USW00094889 TMAX 44
10 2005-01-11 USW00094889 TMAX 44
11 2005-01-12 USW00094889 TMAX 139
12 2005-01-13 USW00094889 TMAX 161
13 2005-01-14 USW00094889 TMAX 150
14 2005-01-15 USW00094889 TMAX -33
15 2005-01-16 USW00094889 TMAX -33
16 2005-01-17 USW00094889 TMAX -50
17 2005-01-18 USW00094889 TMAX -33
18 2005-01-19 USW00094889 TMAX 11
19 2005-01-20 USW00094889 TMAX 11
20 2005-01-21 USW00094889 TMAX -39
21 2005-01-22 USW00094889 TMAX -72
22 2005-01-23 USW00094889 TMAX -44
23 2005-01-24 USW00094889 TMAX 11
24 2005-01-25 USW00094889 TMAX 28
25 2005-01-26 USW00094889 TMAX 28
26 2005-01-27 USW00094889 TMAX 6
27 2005-01-28 USW00094889 TMAX -11
28 2005-01-29 USW00094889 TMAX 17
29 2005-01-30 USW00094889 TMAX 28
... ... ... ... ...
3603 2014-11-13 USW00094889 TMAX 39
3604 2014-11-14 USW00094889 TMAX 33
3605 2014-11-15 USW00094889 TMAX 28
3606 2014-11-16 USW00094889 TMAX 28
3607 2014-11-17 USW00094889 TMAX 17
3608 2014-11-18 USW00094889 TMAX 11
3609 2014-11-19 USW00094889 TMAX 11
3610 2014-11-20 USW00094889 TMAX 6
3611 2014-11-21 USW00094889 TMAX -10
3612 2014-11-22 USW00094889 TMAX 106
3613 2014-11-23 USW00094889 TMAX 156
3614 2014-11-24 USW00094889 TMAX 172
3615 2014-11-25 USW00094889 TMAX 172
3616 2014-11-26 USW00094889 TMAX 28
3617 2014-11-27 USW00094889 TMAX 39
3618 2014-11-28 USW00094889 TMAX 22
3619 2014-11-29 USW00094889 TMAX 117
3620 2014-11-30 USW00094889 TMAX 178
3621 2014-12-01 USW00094889 TMAX 172
3622 2014-12-02 USW00094889 TMAX 33
3623 2014-12-03 USW00094889 TMAX 61
3624 2014-12-04 USW00094889 TMAX 50
3625 2014-12-05 USW00094889 TMAX 50
3626 2014-12-06 USW00094889 TMAX 67
3627 2014-12-07 USW00094889 TMAX 67
3628 2014-12-08 USW00094889 TMAX 72
3629 2014-12-09 USW00094889 TMAX 56
3630 2014-12-10 USW00094889 TMAX 50
3631 2014-12-11 USW00094889 TMAX 61
3632 2014-12-12 USW00094889 TMAX 50
[3631 rows x 4 columns]
数据框 datamin 像这样:
Date ID Element Data_Value
0 2005-01-01 USC00200032 TMIN -56
1 2005-01-02 USC00200032 TMIN -56
2 2005-01-03 USC00200032 TMIN 0
3 2005-01-04 USC00200032 TMIN -39
4 2005-01-05 USC00200032 TMIN -94
5 2005-01-06 USC00200032 TMIN -106
6 2005-01-07 USC00200032 TMIN -111
7 2005-01-08 USC00200032 TMIN -100
8 2005-01-09 USC00200032 TMIN -67
9 2005-01-10 USC00200032 TMIN -56
10 2005-01-11 USC00200032 TMIN -22
11 2005-01-12 USC00200032 TMIN -17
12 2005-01-13 USC00200032 TMIN -83
13 2005-01-14 USC00200032 TMIN -128
14 2005-01-15 USC00200032 TMIN -144
15 2005-01-16 USC00200032 TMIN -150
16 2005-01-17 USC00200032 TMIN -189
17 2005-01-18 USC00200032 TMIN -217
18 2005-01-19 USC00200228 TMIN -300
19 2005-01-20 USC00200032 TMIN -156
20 2005-01-21 USC00200032 TMIN -178
21 2005-01-22 USC00200032 TMIN -178
22 2005-01-23 USC00200032 TMIN -250
23 2005-01-24 USC00200032 TMIN -267
24 2005-01-25 USC00200032 TMIN -228
25 2005-01-26 USC00200032 TMIN -206
26 2005-01-27 USC00200032 TMIN -239
27 2005-01-28 USC00200032 TMIN -250
28 2005-01-29 USC00200032 TMIN -222
29 2005-01-30 USC00200228 TMIN -217
... ... ... ... ...
3603 2014-11-13 USC00200032 TMIN -71
3604 2014-11-14 USC00200032 TMIN -78
3605 2014-11-15 USC00200032 TMIN -94
3606 2014-11-16 USC00200032 TMIN -72
3607 2014-11-17 USC00200032 TMIN -106
3608 2014-11-18 USC00200032 TMIN -144
3609 2014-11-19 USC00200032 TMIN -128
3610 2014-11-20 USC00200032 TMIN -122
3611 2014-11-21 USC00200032 TMIN -182
3612 2014-11-22 USC00200032 TMIN -172
3613 2014-11-23 USC00200032 TMIN -100
3614 2014-11-24 USC00200032 TMIN -5
3615 2014-11-25 USC00200032 TMIN -33
3616 2014-11-26 USC00200032 TMIN -67
3617 2014-11-27 USC00200032 TMIN -82
3618 2014-11-28 USC00200032 TMIN -133
3619 2014-11-29 USC00200032 TMIN -106
3620 2014-11-30 USC00200032 TMIN -56
3621 2014-12-01 USC00200032 TMIN -88
3622 2014-12-02 USC00200032 TMIN -99
3623 2014-12-03 USC00200032 TMIN -71
3624 2014-12-04 USC00200032 TMIN -77
3625 2014-12-05 USC00200032 TMIN -61
3626 2014-12-06 USC00200032 TMIN -50
3627 2014-12-07 USC00200032 TMIN -78
3628 2014-12-08 USC00200032 TMIN -78
3629 2014-12-09 USC00200032 TMIN -39
3630 2014-12-10 USC00200032 TMIN -72
3631 2014-12-11 USC00200032 TMIN -88
3632 2014-12-12 USC00200032 TMIN -78
[3631 rows x 4 columns]
【问题讨论】:
-
尽量不要混合使用 pandas 绘图和直接调用 matplotlib 方法。在这种情况下,我会坚持使用裸 matplotlib,因为 pandas 会做一些聪明但与原始 matplotlib 不同的事情。始终明确地作用于轴(即
ax.fill_between,而不是plt.gca().fill_between) -
@PaulH 请在上面查看我的编辑!
-
看起来您的数据框中有一些错误数据
-
@PaulH 你是什么意思坏数据?
标签: python pandas matplotlib plot visualization