numpy.loadtxt画功率谱图

来源:互联网 发布:域名注册随时都可以吗 编辑:程序博客网 时间:2024/05/05 18:02

(非专业相关可以选择性阅读)
从CAMB中可以得到.dat文件,由于第一行有L,TT,EE等字符使得numpy无法正常读取文件;故可以手动将第一行去掉,剩下的以python写代码画图,如下:

import matplotlib.pyplot as pltimport numpy as npdata = 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 pltimport numpy as npdata = 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 pltimport numpy as npdata = 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 pltimport numpy as npdata = 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()

这里写图片描述

原创粉丝点击