python⽓象绘图_Python⽓象绘图教程(三)
更多的关于基础折线图技巧
前⾯已经讲了很多关于折线图的常⽤参数,但是像颜⾊关键词在⿊⽩⽂献中应该如何修改呢?plot()提供了⼀个marker=' '参数,其具体变化如下:
plt.plot(x,tem,c='k',lw=1,ls='-',marker='*')plt.plot(x,tem,c='k',lw=1,ls='-',marker='d')
这样就能在⿊⽩情况下区分不同的线条了。官⽹给出了很多符号样式,可挑选你觉得好看的符号样式即可(虽然我觉得没⼏个好看的):
⽓象上常⽤的有三线图、五线图。三线图主要是⽇常⽓象分析的⽓压、⽓温、湿度(或其他绘图量)有时还会绘制降⽔柱状图。五线图主要是展⽰春夏秋冬和年平均的变化关系。⼀张图如果有更多的线条会使得界⾯凌乱不堪,不能⽤于科学分析。
这两张图就是典型的折线图,折线图在表⽰某个⽓象数据随时间变化特点时相对视觉观感更好。
下⾯讲讲第⼀张图的绘制(第⼆张难度主要是反映在数据处理上),在前⾯初步接触折线图绘制时,在引⼊库包后有⼀个步骤叫做虚拟数据,这是因为还没有学习读取数据。在python⼊门教程中会介绍open命
javabean的访问范围不能是令,和其他语⾔⼀样,是作为读取⽂件的命令。但是在py中,有⼀个专门进⾏数据处理的库包叫做pandas(为什么称为胶⽔语⾔,就是因为随时调取需要的库包),引⼊库包命令为:
import pandas as pd
我实验时的数据存储在excel⽂件中,pandas提供了⼀个专门的读取命令python入门教程非常详细免费
按照字⾯意思,read_excel即读取excel⽂件:
filename=r'C:\Users\lenovo\Desktop\绵⽵.xlsx'ad_excel(filename)print ( df )
上述步骤即将excel⽂件读取到df变量中存储起来,然后打印出df。第⼀句是我给出了⽂件的绝对引⽤地址,这样py就会去读取这个指定⽂件。
第⼀列叫做索引,是⽤来区别每⼀⾏的。英⽂这⼀⾏叫做表头,⽤于区分每⼀列。显然,此时还不能绘图,因为没有提取出每⼀列的数值。这是可以使⽤表头进⾏提取,⽐如提取 'TEM'(温度)这⼀列:
temps=df['TEM']print (temps)
这样,⼀列数据就被提取出来了。还可以对这列数据进⾏切⽚:
temps=df['TEM'][0:9]print (temps)
⾄于为什么只能到索引为8⽽不是9,请查阅列表的切⽚原则(我懒,理不直⽓也壮.jpg)。还可以跳跃读取:
devops工程师是干嘛的temps=df['TEM'][0:9:4]print (temps)
这是每间隔四个数值取⼀个。
现在⼤概弄清楚了数据的读取,可以展⽰全部的过程了:
filename=r'C:\Users\lenovo\Desktop\绵⽵.xlsx'ad_excel(filename)>读取⽂件
>>#pressures=df['PRS_Sea']>给每种⽓象特征量⼀个列表⽤以储存数据####temps=df['TEM']>给每种⽓象特征量⼀个列表⽤以储存数据####rhu=df['RHU']>给每种⽓象特征量⼀个列表⽤以储存数据####rains=df['PRE_1h']>给每种⽓象特征量⼀个列表⽤以储存数据####
按照我们之前介绍的绘图步骤,接下来应该作甚呢
fig=plt.figure(figsize=(7,4),dpi=200)
没错,引⼊画布,没有纸怎么画呢?第⼆步添加绘图区:
ax1=fig.add_subplot(111)
黄页88网免费发布信息subplot命令是在画布上添加⼀个绘图区,括号⾥的内容转述为汉字为:“创建⼀个⼀⾏⼀列的绘图区(⼀⾏⼀列就只有⼀个绘图区),ax1是第⼀个绘图区(本来就只有⼀个*囧*)”不懂的话可以做⼀个⼩测试:
ax1=fig.add_subplot(221)ax2=fig.add_subplot(222)ax3=fig.add_subplot(223)ax4=fig.add_subplot(224)
上述命令就是创建⼀个两⾏两列的⼦图区,分别为ax1,ax2,ax3,ax4。
理解了这个就可以引⼊数据画图了:
fig=plt.figure(figsize=(7,4),dpi=200)ax1=fig.add_subplot(111)line1,=ax1.plot(times,temps,'r:',linewidth=1,label='⽓
温')bar1 =ax1.bar(times,rains,color='b',label='降⽔量')line2,=ax1.plot(times,pressures,'k-',linewidth=1.2,label='⽓dedecms更改模版
压')plt.legend((line1,bar1,line2),('⽓温','降⽔量','⽓压'),loc='center left',frameon=False,framealpha=0.5)ax1.set_xlabel('时间 \
h')ax1.set_ylabel('⽓温(℃)\降⽔量(mm)')plt.title("绵⽵市某⽇常规观测")
出图:
wtf(??⼩问号你是否有很多⼩朋友??),没有报错,并且绘制出图形了,那么问题出在哪⾥?——出在量级单位不⼀致。
南信的天⽓图分析课经常⼿绘天⽓图,500的图⼀般从1000百帕开始绘制,每隔2.5⼀根线,⽓温每4℃⼀根~~~~~~~~~魔⾳贯脑
~~~~~~~~~~~~。可是⽓温⼤概在多少呢,⽓温肯定不会超出100℃(那样我就成刚出笼的⼩笼包——浑⾝冒⽓了),降⽔的常见额度⼜是多少呢?不到500mm吧。即使从降⽔量来说,和⽓压动不动上千相⽐,他们就被压制在地平线了。怎么解决这个问题?
有⼀个命令叫做twin(双胞胎),显然,⽓压和⽓温降⽔的x轴都是时间,所以我们来让x轴被合并使⽤,修改后程序为:
html中link是什么意思
fig=plt.figure(figsize=(7,4),dpi=200)ax1=fig.add_subplot(111)line1,=ax1.plot(times,temps,'r:',lw=1,label='⽓温')bar1
=ax1.bar(times,rains,color='b',label='降⽔量')ax2=ax1.twinx()line2,=ax2.plot(times,pressures,'k-',lw=1.2,label='⽓
压')plt.legend((line1,bar1,line2),('⽓温','降⽔量','⽓压'),loc='center left',frameon=False,framealpha=0.5)ax1.set_xlabel('时间 \
h')ax1.set_ylabel('⽓温(℃)\降⽔量(mm)')ax2.set_ylabel('⽓压(hPa)')plt.title("绵⽵市某⽇常规观测")plt.show()
问题解决了。原理是什么——刚才已经讲过了twin,在上⾯程序的第5⾏有ax2=ax1.twinx(),这代表新建了⼀个绘图区,但是两个绘图区共⽤x轴,按照官⽹⼿册介绍,ax2和ax1共⽤x轴,但是ax1使⽤左侧y轴,ax2使⽤右侧y轴。这样,量级不同导致线条起伏程度不够就迎刃⽽解。
另外还有些装饰性的命令,⽐如title,label等,按照其单词意思猜测即可,具体参考基础的教程,⽐如我推荐的莫烦⼤神的教材。主要是想分享共⽤坐标轴这⼀个解决⽅案,因为我之前犯过这个错误。(太不容易了打这么多字o(╥﹏╥)o)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论