如何在Python图中以弧度为单位设置y轴?

DdD*_*DdD 9 python axes matplotlib radians

我想把轴的弧度单位写成比例\pi:像

$\frac{\pi}{4}$, $\frac{\pi}{2}$, ... 
Run Code Online (Sandbox Code Playgroud)

代替

0.785, 1.5707 ... 
Run Code Online (Sandbox Code Playgroud)

有没有标准的方法?作为一个例子,我应该添加到以下代码中?

from pylab import *

x=arange(-10.0,10.0,0.1)
y= arctan(x)

plot(x,y,'b.')
show()
Run Code Online (Sandbox Code Playgroud)

我找到了这个例子http://matplotlib.sourceforge.net/examples/units/radian_demo.html但它没有用,因为我没有basic_units模块.

谢谢!

nye*_*e17 12

硬编码分数或接受浮点数

import matplotlib.pyplot as plt
import numpy as np

x=np.arange(-10.0,10.0,0.1)
y=np.arctan(x)

fig = plt.figure()
ax  = fig.add_subplot(111)

ax.plot(x,y,'b.')

y_pi   = y/np.pi
unit   = 0.25
y_tick = np.arange(-0.5, 0.5+unit, unit)

y_label = [r"$-\frac{\pi}{2}$", r"$-\frac{\pi}{4}$", r"$0$", r"$+\frac{\pi}{4}$",   r"$+\frac{\pi}{2}$"]
ax.set_yticks(y_tick*np.pi)
ax.set_yticklabels(y_label, fontsize=20)

y_label2 = [r"$" + format(r, ".2g")+ r"\pi$" for r in y_tick]
ax2 = ax.twinx()
ax2.set_yticks(y_tick*np.pi)
ax2.set_yticklabels(y_label2, fontsize=20)

plt.show()
Run Code Online (Sandbox Code Playgroud)

结果是

在此输入图像描述

  • 您可以将其作为单行 `plt.yticks(plt.yticks()[0],[r"$" + format(r/np.pi, ".2g")+ r"\pi$" for plt.yticks()[0]]) 中的 r。这使用 yticks 获取刻度值列表,将它们转换为 pi 单位,然后使用列表连接和 mathtext 来格式化它们并将其传递回 yticks。 (2认同)