我在 matplotlib (Python) 中使用箱线图来创建箱线图,我正在创建许多具有不同日期的图表。在 x Axis 上,数据是离散的。
x Axis 上的值(以秒为单位)为 0.25、0.5、1、2、5 .... 28800。这些值是任意选择的(它们是采样周期)。由于数据不可用,某些图表中缺少一两个值。在这些图表上,x Axis 会自行调整大小以展开其他值。
我希望所有图表在 x Axis 上的相同位置具有相同的值(如果 x Axis 显示一个值但图表上没有绘制数据并不重要)
有人能告诉我是否有指定 x Axis 值的方法吗?或另一种将相同值保存在同一位置的方法。
相关部分代码如下:
对于我,在 myDataframe.groupby("Date") 中分组:
graphFilename = (basename+'_' + str(i) + '.png')
plt.figure(graphFilename)
group.boxplot(by=["SamplePeriod_seconds"], sym='g+') ## colour = 'blue'
plt.grid(True)
axes = plt.gca()
axes.set_ylim([0,30000])
plt.ylabel('Average distance (m)', fontsize =8)
plt.xlabel('GPS sample interval (s)', fontsize=8)
plt.tick_params(axis='x', which='major', labelsize=8)
plt.tick_params(axis='y', which='major', labelsize=8)
plt.xticks(rotation=90)
plt.title(str(i) + ' - ' + 'Average distance travelled by cattle over 24 hour period', fontsize=9)
plt.suptitle('')
plt.savefig(graphFilename)
plt.close()
感谢任何帮助,我将继续谷歌搜索...。谢谢 :)
最佳答案
如果你尝试这样:
plt.xticks(np.arange(x.min(), x.max(), 5))
其中 x 是您的 x 值数组,5 是您沿 Axis 采取的步数。
同样适用于带有 yticks 的 y Axis 。希望能帮助到你! :)
编辑:
我删除了我没有的实例,但下面的代码应该给你一个网格来绘制:
import matplotlib.pyplot as plt
import numpy as np
plt.grid(True)
axes = plt.gca()
axes.set_ylim([0, 30000])
plt.ylabel('Average distance (m)', fontsize=8)
plt.xlabel('GPS sample interval (s)', fontsize=8)
plt.tick_params(axis='x', which='major', labelsize=8)
plt.tick_params(axis='y', which='major', labelsize=8)
plt.xticks(rotation=90)
plt.suptitle('')
my_xticks =[0.25,0.5,1,2,5,10,20,30,60,120,300,600,1200,1800,2400,3000,3600,7200,10800, 14400,18000,21600,25200,28800]
x = np.array(np.arange(0, len(my_xticks), 1))
plt.xticks(x, my_ticks)
plt.show()
尝试在此之上插入您的值:)
关于python - 如何指定要在 x Axis 上绘制的离散值(matplotlib、箱线图)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41892680/