[英]how to round the yaxis using matplotlib.ticker in python
[英]Wrong values appears… using python matplotlib.ticker (ax.xaxis.set_major_locator)
我很难通过使用matplotlib.ticker
方法来获取正确的x-ticks值。 这是描述我的问题的简单工作示例。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
## Sample code
np.arange(0, 15, 5)
plt.figure(figsize = [6,4])
x=np.array([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15])
y=np.array([15,16,17,18,19,20,40,50,60,70,80,90,100,110,120])
ax = sns.pointplot(x,y, color='k', markers=["."], scale = 2)
ax.xaxis.set_major_locator(matplotlib.ticker.FixedLocator([1,5,8]))
结果:x-点位于正确的位置(1,5,8),但我想要的那些位置的值是1,5,8(对应的x值),而不是(1,2,3)
我已经尝试过https://matplotlib.org/examples/ticks_and_spines/tick-locators.html中解释的所有定位符,但是都显示了1,2,3个x-ticks值... :(
我的实际问题(遇到相同问题的麻烦:x-ticks应该类似于64、273.5、1152.5,而不是前三个数字)
...
print(intervals}
>> [64, 74, 86.5, 10.1, 116.0, 132.0, 152.0, 175.5, 204.0, 236.0, 273.5, 319.0, 371.0, 434.0, 509.0, 595.5, 701.0, 861.0, 1152.5]
ax.xaxis.set_major_locator(matplotlib.ticker.LinearLocator(3)
plt.show()
您已经成功设置了定位器。 s的位置确实在位置1,5,8。
您缺少的是格式化程序。 您想在这些位置显示什么值?
您可以使用FixedFormatter
,指定要显示的标签,
ax.xaxis.set_major_formatter(matplotlib.ticker.FixedFormatter([1,5,8]))
您同样可以使用ScalarFormatter
,它会根据它们的位置自动选择刻度标签。
ax.xaxis.set_major_formatter(matplotlib.ticker.ScalarFormatter())
完整的代码:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
import seaborn as sns
## Sample code
np.arange(0, 15, 5)
plt.figure(figsize = [6,4])
x=np.array([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15])
y=np.array([15,16,17,18,19,20,40,50,60,70,80,90,100,110,120])
ax = sns.pointplot(x,y, color='k', markers=["."], scale = 2)
ax.xaxis.set_major_locator(matplotlib.ticker.FixedLocator([1,5,8]))
ax.xaxis.set_major_formatter(matplotlib.ticker.ScalarFormatter())
# or use
#ax.xaxis.set_major_formatter(matplotlib.ticker.FixedFormatter([1,5,8]))
plt.show()
在这里使用海洋点状图可能不是最佳选择。 常见的matplotlib图更有意义。 在这种情况下,仅设置定位器就足够了,因为格式化程序已经自动设置为ScalarFormatter。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
import seaborn as sns
## Sample code
np.arange(0, 15, 5)
plt.figure(figsize = [6,4])
x=np.array([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15])
y=np.array([15,16,17,18,19,20,40,50,60,70,80,90,100,110,120])
plt.plot(x,y, marker="o")
plt.gca().xaxis.set_major_locator(matplotlib.ticker.FixedLocator([1,5,8]))
plt.show()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.