我需要绘制一个以百分比表示的男性和女性绘图。我已经看到了以下问题。 Convert negative y axis to positive (matplotlib) ,它提供了使负值变为正数的解决方案,这正是我所需要的。但是,它将在标准模式下显示它们。 0.01,而不是1% 我在以下命令中按顺序进行操作,但似乎无法正确执行。 我注意到yticklabel看起来像 有没有办法摆脱-号? 答案 0 :(得分:1) ax.set_ylim(-0.01, 0.01)
ax.set_yticklabels([str(abs(x)) for x in ax.get_yticks()])
ax.yaxis.set_major_formatter(mtick.PercentFormatter(1))
Text(-0.01, 0, '-1.00%')
Text(-0.0075, 0, '-0.75%')
Text(-0.005, 0, '-0.50%')
Text(-0.0025000000000000005, 0, '-0.25%')
Text(0.0, 0, '0.00%')
Text(0.0025000000000000005, 0, '0.25%')
Text(0.004999999999999999, 0, '0.50%')
Text(0.0075000000000000015, 0, '0.75%')
Text(0.01, 0, '1.00%')
1 个答案:
PercentFormatter
的内容时,yticklabels
不相关,因此您必须做到最后。这是一个正弦曲线示例,标记为从100%到0%到100%:import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(111)
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)
ax.plot(x,y)
ax.set_yticklabels([f"{abs(100*x)}%" for x in ax.get_yticks()])
fig.show()