numpy.loadtxt画功率谱图
程序员文章站
2022-07-13 13:30:45
...
(非专业相关可以选择性阅读)
从CAMB中可以得到.dat文件,由于第一行有L,TT,EE等字符使得numpy无法正常读取文件;故可以手动将第一行去掉,剩下的以python写代码画图,如下:
import matplotlib.pyplot as plt
import numpy as np
data = np.loadtxt('test_scalCls.dat')
L = data[:,0]
TT = data[:,1]
EE = data[:,2]
TE = data[:,3]
plt.plot(L,TT)
plt.plot(L,TE)
plt.title ('Scalar power spectrum',fontsize=18)
plt.xlabel ('multipole moment l',fontsize=12)
plt.ylabel('C_l',fontsize=12)
plt.show()
以上是画了两个图在一起的,使用的是笛卡尔坐标
画多个图在一起的便捷方法见后文
对数坐标:
ax.semilogx(x,y) #x轴为对数坐标轴
ax.semilogy(x,y) #y轴为对数坐标轴
ax.loglog(x,y) #双对数坐标轴
1)横纵坐标都是对数坐标
import matplotlib.pyplot as plt
import numpy as np
data = np.loadtxt('test_scalCls.dat')
L = data[:,0]
TT = data[:,1]
EE = data[:,2]
TE = data[:,3]
plt.loglog (L,TT,color='red',linestyle='-',linewidth=1.5)
plt.title ('Scalar power spectrum',fontsize=18)
plt.xlabel ('multipole moment l',fontsize=12)
plt.ylabel('C_l',fontsize=12)
plt.xlim(2,2200)
plt.ylim(10**2,10**4)
plt.show()
以上画的是TT谱,结果如下:
将TT,EE,TE,TP….谱以T为横坐标画对数图(在一个窗口)如下
import matplotlib.pyplot as plt
import numpy as np
data = np.loadtxt('test_scalCls.dat')
L = data[:,0]
for column in data.T:
plt.loglog(L,column,linestyle='-',linewidth=1.5)
plt.title ('Scalar power spectrum',fontsize=18)
plt.xlabel ('multipole moment l',fontsize=12)
plt.ylabel('C_l',fontsize=12)
plt.xlim(2,2200)
plt.show()
结果为:
2)一轴是对数
以下画TE谱
import matplotlib.pyplot as plt
import numpy as np
data = np.loadtxt('test_scalCls.dat')
L = data[:,0]
TT = data[:,1]
EE = data[:,2]
TE = data[:,3]
plt.semilogx (L,TE,color='b',linestyle='-',linewidth=1.5)
plt.title ('Scalar power spectrum',fontsize=18)
plt.xlabel ('multipole moment l',fontsize=12)
plt.ylabel('C_l',fontsize=12)
plt.xlim(2,2200)
plt.ylim(-150,150)
plt.show()
上一篇: ffmpeg安装及使用