python绘制对数坐标图描点,Python⽓象绘图(⼀):双横坐
标轴曲线对数图
⽼夫聊发少年狂,试试Python⽓象绘图。
现有数据为①记录能谱密度的⼆进制spect.dat;②记录均⼀化波数、均⼀化⾓波数和波长的(奇怪的是⾃动换成5个数值⼀⾏)。
import numpy as np
download什么意思import struct
import matplotlib.pyplot as plt
def getbin(filename):
with open(filename,mode='rb') as f:
ad()
ll()
tmp11=list(struct.unpack('f'*26*479,tmp1))
#python没有⼆进制格式,所以需要⽤struck.unpack来把字符串转译成实数,f指float/float32
#26层,479点
shape(tmp11,(26,479))
#从⼀维列表变形成⼆维列表,注意python是⾏优先
an(tmp12,axis=0)
#按层平均
return sp
#传出动能谱密度
def getticks(filename):
with open(filename,mode='r') as f:
adlines()
d1=[]
for line in data:
arr=list(map(float,line.split()))
#不知道为什么,fortran存储的⽂本⽂件变成了5个数值⼀⾏,所以⽤f.readlines()先把⽂本中所
#有的值读到data中
迅雷php格式文件怎么打开#然后对data中每⼀⾏按空格分割(split),转化为实数(float),针对整个列表实施操作,转成新列表
shape(d1,(3,479))
return d2[1][:],d2[2][:]
#传出标准化⾓波数和波长
def main():
sp_noskeb=getbin("spectra_noskeb.dat")
sp_skeb=getbin("spectra_skeb.dat")
wvnum,wvlen=getticks("")
wvlen=wvlen/1000.
line1=wvnum**(-5/3)/(10.0**2.9)
line2=wvnum**(-3)/(10.0**9.1)
#绘制log图上斜率为-5/3和-3的直线数值
oracle数据库语句查询表fig, ax =plt.subplots()
ax.loglog(wvnum,sp_noskeb,'b-',label="noskeb")
ax.loglog(wvnum,line1,'k:')arrowos是什么系统
气象python零基础入门教程
ax.loglog(wvnum,line2,'k:')
#绘制对数曲线图
ax2=ax.twiny()
#双横轴必须操作
ax2.loglog(wvlen,sp_skeb,'r--',label="skeb")
#带数据翻转横轴(横轴默认从⼩到⼤排列,⽽⾮按数组次序显⽰)
ax.legend(loc='upper right', shadow=True, fontsize='medium')
ax2.legend(loc='upper center', shadow=True, fontsize='medium') #绘制图例
fig.savefig('kes.eps',dpi=300)
stinky#保存eps格式图形
plt.show()
#在屏幕上显⽰图形
if __name__ == '__main__':
main()
最终的图形如下:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。