B1tetheDust 发表于 2021-10-21 16:06:52

matplotlib.pyplot作图y轴坐标范围设置

本帖最后由 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 = curlist.split()
      line_number += 1

for i in range(len(list_0)):
    target_list = 'y' + str(i)
    list_name = []
    for j in range(line_number):
      primary_list = 'list_' + str(j)
      list_name.append(list_name)

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).split()
      if not len(plist):
            break
      klabel.append('$' +
                      plist.replace('GAMMA',
                                       '\Gamma').replace('SIGMA','\Sigma')
                      + '$')
      kx.append(float(plist))
   
# 作图
plt.figure()
for i in range(1,len(list_0)):
    ys = 'y' + str(i)
    plt.plot(list_name['x'], list_name)
   
plt.xlim(])   
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,但是运行之后得到的图是附件的样子{:10_266:}。x轴设置范围后就能正常实现,但是这个y怎么调都不行。

阿奇_o 发表于 2021-10-21 19:41:46

本帖最后由 阿奇_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)

仅供参考。

B1tetheDust 发表于 2021-11-2 15:03:08

阿奇_o 发表于 2021-10-21 19:41
不懂这些数据具体代表什么,以及你具体想要什么效果,所以比较难处理。但初步试验,应该是 plt.ylim() 和   ...

不好意思,之前一直忘回了。问题已经找到了,是第14行那里须要改为.split()]。之前传入的是字符串的形式,所以导致了plt.ylim()没有截断到我想要的范围(-1.5, 1.5)。感谢您的回复{:10_254:}
页: [1]
查看完整版本: matplotlib.pyplot作图y轴坐标范围设置