鱼C论坛

 找回密码
 立即注册
查看: 2319|回复: 2

[已解决]matplotlib.pyplot作图y轴坐标范围设置

[复制链接]
发表于 2021-10-21 16:06:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 B1tetheDust 于 2021-10-21 17:04 编辑
  1. import matplotlib.pyplot as plt
  2. import numpy as np

  3. # 把数据整理为x和y1-yn的列表
  4. with open('C:/Users/wuhw/Desktop/REFORMATTED_BAND_UP.dat', 'r') as f:
  5.     f.readlines(1)
  6.     list_name = locals()
  7.     line_number = 0
  8.     while True:
  9.         list_ = 'list_' + str(line_number)
  10.         curlist = f.readlines(1)
  11.         if not len(curlist):
  12.             break
  13.         list_name[list_] = curlist[0].split()
  14.         line_number += 1

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

  21. list_name['x'] = list_name['y0']

  22. # 读取KLABELS的信息
  23. with open('C:/Users/wuhw/Desktop/KLABELS', 'r') as f:
  24.     f.readlines(1)
  25.     klabel = []
  26.     kx = []
  27.     while True:
  28.         plist = f.readlines(1)[0].split()
  29.         if not len(plist):
  30.             break
  31.         klabel.append('$' +
  32.                       plist[0].replace('GAMMA',
  33.                                        '\Gamma').replace('SIGMA','\Sigma')
  34.                       + '$')
  35.         kx.append(float(plist[1]))
  36.    
  37. # 作图
  38. plt.figure()
  39. for i in range(1,len(list_0)):
  40.     ys = 'y' + str(i)
  41.     plt.plot(list_name['x'], list_name[ys])
  42.    
  43. plt.xlim([0, kx[-1]])   
  44. plt.ylim([-1.5, 1.5])
  45. plt.xlabel(r'$K-points$')
  46. plt.ylabel(r'$E-E_F$')

  47. #ax = plt.gca()
  48. #ax.xaxis.set_ticks_position('bottom')
  49. #ax.yaxis.set_ticks_position('left')
  50. #ax.spines['left'].set_position(('data', 0))

  51. new_ticks = np.linspace(-1.5,1.5,7)
  52. plt.xticks(kx,klabel)
  53. plt.yticks(new_ticks)
  54.    

  55. plt.show()
复制代码

y轴范围设置的是-1.5到1.5,但是运行之后得到的图是附件的样子。x轴设置范围后就能正常实现,但是这个y怎么调都不行。
最佳答案
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)

仅供参考。
Figure_1.png

data.zip

135.87 KB, 下载次数: 4

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-10-21 19:41:46 | 显示全部楼层    本楼为最佳答案   

回帖奖励 +1 鱼币

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

仅供参考。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

不好意思,之前一直忘回了。问题已经找到了,是第14行那里须要改为[float(i) for i in curlist[0].split()]。之前传入的是字符串的形式,所以导致了plt.ylim()没有截断到我想要的范围(-1.5, 1.5)。感谢您的回复
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-15 11:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表