如何使用Python Matplotlib旋转轴上的数字

如何使用Python Matplotlib旋转轴上的数字,python,matplotlib,Python,Matplotlib,有一个用Matplotlib绘制的散点图,它包含的点超过了底部轴所能包含的点,因此这些数字开始相互重叠,有没有办法将它们旋转到一定程度,或者至少使它们垂直?查看文档,我找到了一种旋转标签的方法,但是是否也有一种旋转数字的方法 我想到的最终结果是这样的: 如果不可能的话,有没有办法只显示指定范围的数字,并隐藏所有点的精确x坐标?(这正是我使用预先指定的数字时得到的行为,例如,如果x轴从0到20,则将0、5、10、15和20放在x轴上 但在这张图中,我从api(活动绘图)中获取点,因此点会不断添加

有一个用Matplotlib绘制的散点图,它包含的点超过了底部轴所能包含的点,因此这些数字开始相互重叠,有没有办法将它们旋转到一定程度,或者至少使它们垂直?查看文档,我找到了一种旋转标签的方法,但是是否也有一种旋转数字的方法

我想到的最终结果是这样的:

如果不可能的话,有没有办法只显示指定范围的数字,并隐藏所有点的精确x坐标?(这正是我使用预先指定的数字时得到的行为,例如,如果x轴从0到20,则将0、5、10、15和20放在x轴上

但在这张图中,我从api(活动绘图)中获取点,因此点会不断添加,出于某些原因,matplotlib的行为有所不同,不会从一开始就将我指定的范围限制放在x轴上。相反,它会将所有数字的x坐标放在x轴上,从而使它们重叠

import requests
import matplotlib.pyplot as plt
from matplotlib import animation

fig = plt.figure()
location_axes = fig.add_subplot(1,1,1)

xs = []
ys = []

def get_current_location(i):
  response = requests.get("http://api.open-notify.org/iss-now.json")
  response_json = response.json()
  if(response.status_code == 200):
    location_axes.clear()
    xs.append(response_json['iss_position']['longitude'])
    ys.append(response_json['iss_position']['latitude'])
    location_axes.scatter(
      xs,
      ys
    )
  else:
    raise ConnectionError("A connection error occured while retrieving the data")

location_axes.set_xlim([-180,180])
location_axes.set_ylim([-90,90])
plt.grid(True)
# plt.xtick(rotation=45)

anim = animation.FuncAnimation(fig, get_current_location, interval=1000)

plt.show()

您可以通过以下方式完成此操作:

plt.xtick(rotation=45)
如果您希望它是垂直的,您还可以执行以下操作:

plt.xticks(rotation='vertical')
您可以在以下文档中阅读有关旋转的更多信息:

编辑 添加代码后,请注意,您应该执行以下操作,因为您希望的操作是在
轴上执行的
对象:

location_axes.tick_params(axis='x', rotation=45)
将此添加到动画期间调用的函数中:

def get_current_location(i):
  response = requests.get("http://api.open-notify.org/iss-now.json")
  response_json = response.json()
  if(response.status_code == 200):
    location_axes.clear()
    xs.append(response_json['iss_position']['longitude'])
    ys.append(response_json['iss_position']['latitude'])
    location_axes.scatter(
      xs,
      ys
    )
    location_axes.tick_params(axis='x', rotation=45)
  else:
    raise ConnectionError("A connection error occured while retrieving the data")

谢谢David,我已经尝试过了,但是我得到了“module'matplotlib.pyplot'没有属性'xtick'”(我使用的是matplotlib的最新版本)@aderchox这很奇怪,你能将你的全部代码添加到问题正文中吗;xtick应该有效谢谢,但你试过了吗?它仍然为我水平显示X轴编号。这里没有列出旋转:@aderchox看看更新,你可能没有正确调用它;它对我有效