python-熊猫数据框多色线条图
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-熊猫数据框多色线条图,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2509字,纯文字阅读大概需要4分钟。
内容图文
![python-熊猫数据框多色线条图](/upload/InfoBanner/zyjiaocheng/679/a220971677394d4091e45c24827037cd.jpg)
我有一个带有DateTime索引的熊猫数据框和两个表示风速和环境温度的列.这是半天的数据
temp winds
2014-06-01 00:00:00 8.754545 0.263636
2014-06-01 01:00:00 8.025000 0.291667
2014-06-01 02:00:00 7.375000 0.391667
2014-06-01 03:00:00 6.850000 0.308333
2014-06-01 04:00:00 7.150000 0.258333
2014-06-01 05:00:00 7.708333 0.375000
2014-06-01 06:00:00 9.008333 0.391667
2014-06-01 07:00:00 10.858333 0.300000
2014-06-01 08:00:00 12.616667 0.341667
2014-06-01 09:00:00 15.008333 0.308333
2014-06-01 10:00:00 17.991667 0.491667
2014-06-01 11:00:00 21.108333 0.491667
2014-06-01 12:00:00 21.866667 0.395238
我想将此数据绘制成一条线,其中颜色根据温度而变化.因此,例如,从浅红色到深红色的温度越高.
我用matplotlib找到了这example of multicolored行,但是我不知道如何在pandas DataFrame中使用它.有谁知道我能做什么?
如果可以这样做,是否还可以作为附加功能根据风速更改线宽?因此,风越快,线越宽.
谢谢你的帮助!
解决方法:
熊猫中的内置绘图方法可能无法执行此操作.您需要提取数据并使用matplotlib绘制它们.
from matplotlib.collections import LineCollection
import matplotlib.dates as mpd
x=mpd.date2num(df.index.to_pydatetime())
y=df.winds.values
c=df['temp'].values
points = np.array([x, y]).T.reshape(-1, 1, 2)
segments = np.concatenate([points[:-1], points[1:]], axis=1)
lc = LineCollection(segments, cmap=plt.get_cmap('copper'), norm=plt.Normalize(0, 10))
lc.set_array(c)
lc.set_linewidth(3)
ax=plt.gca()
ax.add_collection(lc)
plt.xlim(min(x), max(x))
ax.xaxis.set_major_locator(mpd.HourLocator())
ax.xaxis.set_major_formatter(mpd.DateFormatter('%Y-%m-%d:%H:%M:%S'))
_=plt.setp(ax.xaxis.get_majorticklabels(), rotation=70 )
plt.savefig('temp.png')
有两个问题值得一提:
>颜色梯度的范围由norm = plt.Normalize(0,10)控制
> pandas和matplotlib对时间序列的绘制方式不同,这要求在绘制之前将df.index转换为float.通过修改major_locators,我们将xaxis majorticklabel重新恢复为日期时间格式.
当我们要绘制多条线(数据将在两个单独的x范围内绘制)时,第二个问题可能会导致问题:
#follow what is already plotted:
df['another']=np.random.random(13)
print ax.get_xticks()
df.another.plot(ax=ax, secondary_y=True)
print ax.get_xticks(minor=True)
[ 735385. 735385.04166667 735385.08333333 735385.125
735385.16666667 735385.20833333 735385.25 735385.29166667
735385.33333333 735385.375 735385.41666667 735385.45833333
735385.5 ]
[389328 389330 389332 389334 389336 389338 389340]
因此,我们需要在没有熊猫的.plot()方法的情况下执行此操作:
ax.twinx().plot(x, df.another)
内容总结
以上是互联网集市为您收集整理的python-熊猫数据框多色线条图全部内容,希望文章能够帮你解决python-熊猫数据框多色线条图所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。