Используйте пользовательские метки для координат осей - PullRequest
0 голосов
/ 02 сентября 2018

Я строю какую-то функцию в matplotlib. Но я хочу изменить обычные координаты X и Y. Например, я строю график y=sin(x) в [-pi, pi]. Но ось X показывает 1, 2, 3,... таким образом, а я хочу x: -pi, 0, pi,... Возможно ли это?

Мой код

import matplotlib as mpl
mpl.rc('text', usetex = True)
mpl.rc('font', family = 'serif')
import matplotlib.pyplot as plt
import numpy as np

plt.gca().set_aspect('equal', adjustable='box')
plt.style.use(['ggplot','dark_background'])

x = np.arange(-np.pi,np.pi,0.001)
y = np.sin(x)

plt.xlabel('$x$')
plt.ylabel('$y$')
plt.plot(x,y, label='$y=\sin x$')
plt.legend()
plt.show()

выход enter image description here

Как поменять метки на координатах осей? Спасибо.

Ответы [ 2 ]

0 голосов
/ 02 сентября 2018

Да, вы можете иметь собственные отметки на оси и устанавливать их на одинаковом расстоянии; для этого вам необходимо установить метки в виде последовательности вместе со связанными значениями:

import matplotlib as mpl
mpl.rc('text', usetex = True)
mpl.rc('font', family = 'serif')
import matplotlib.pyplot as plt
import numpy as np


plt.gca().set_aspect('equal', adjustable='box')
plt.style.use(['ggplot','dark_background'])

x = np.arange(-np.pi,np.pi,0.001)
y = np.sin(x)

# the following two sequences contain the values and their assigned tick markers
xx = [-np.pi + idx*np.pi/4 for idx in range(10)]
xx_t = ['$-\\pi$', '$\\frac{-3\\pi}{4}$', '$\\frac{-\\pi}{2}$', '$\\frac{-\\pi}{4}$', '0', 
        '$\\frac{\\pi}{4}$', '$\\frac{\\pi}{2}$', '$\\frac{3\\pi}{4}$', '$\\pi$']
plt.xticks(xx, xx_t)   # <-- the mapping happens here

plt.xlabel('$x$')
plt.ylabel('$y$')
plt.plot(x,y, label='$y=\sin x$')
plt.legend()
plt.show()

enter image description here

0 голосов
/ 02 сентября 2018

Здесь вы можете отобразить любой желаемый диапазон числа пи. Просто добавьте следующие строки в ваш код после plt.plot

xlabs = [r'%d$\pi$'%i if i!=0 else 0 for i in range(-2, 3, 1)]
xpos = np.linspace(-2*np.pi, 2*np.pi, 5)
plt.xticks(xpos, xlabs)

выход enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...