|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 B1tetheDust 于 2021-10-21 17:04 编辑
- import matplotlib.pyplot as plt
- import numpy as np
- # 把数据整理为x和y1-yn的列表
- with open('C:/Users/wuhw/Desktop/REFORMATTED_BAND_UP.dat', 'r') as f:
- f.readlines(1)
- list_name = locals()
- line_number = 0
- while True:
- list_ = 'list_' + str(line_number)
- curlist = f.readlines(1)
- if not len(curlist):
- break
- list_name[list_] = curlist[0].split()
- line_number += 1
- for i in range(len(list_0)):
- target_list = 'y' + str(i)
- list_name[target_list] = []
- for j in range(line_number):
- primary_list = 'list_' + str(j)
- list_name[target_list].append(list_name[primary_list][i])
- list_name['x'] = list_name['y0']
- # 读取KLABELS的信息
- with open('C:/Users/wuhw/Desktop/KLABELS', 'r') as f:
- f.readlines(1)
- klabel = []
- kx = []
- while True:
- plist = f.readlines(1)[0].split()
- if not len(plist):
- break
- klabel.append('$' +
- plist[0].replace('GAMMA',
- '\Gamma').replace('SIGMA','\Sigma')
- + '$')
- kx.append(float(plist[1]))
-
- # 作图
- plt.figure()
- for i in range(1,len(list_0)):
- ys = 'y' + str(i)
- plt.plot(list_name['x'], list_name[ys])
-
- plt.xlim([0, kx[-1]])
- plt.ylim([-1.5, 1.5])
- plt.xlabel(r'$K-points$')
- plt.ylabel(r'$E-E_F$')
- #ax = plt.gca()
- #ax.xaxis.set_ticks_position('bottom')
- #ax.yaxis.set_ticks_position('left')
- #ax.spines['left'].set_position(('data', 0))
- new_ticks = np.linspace(-1.5,1.5,7)
- plt.xticks(kx,klabel)
- plt.yticks(new_ticks)
-
- plt.show()
复制代码
y轴范围设置的是-1.5到1.5,但是运行之后得到的图是附件的样子 。x轴设置范围后就能正常实现,但是这个y怎么调都不行。
本帖最后由 阿奇_o 于 2021-10-21 19:44 编辑
不懂这些数据具体代表什么,以及你具体想要什么效果,所以比较难处理。但初步试验,应该是 plt.ylim() 和 np.linspace() 的问题。
你可以试着 把 plt.ylim() 设置大些,如 plt.ylim(-100, 100) ; np.linspace()的间距则弄小些,如 np.linspace(-1.5, 1.5, 0.01)
仅供参考。
|
|