我正在尝试设置一个反转的坐标轴条形图,使得较小的数字具有更大的条形,并且这些条形从柱状图的顶部开始。理想情况下,我的y轴应该从底部的10e-10变化到顶部的10e-2,并且应该类似于这个excel图表:
在呈现这些数据时,获得更低的数字更好,因此我希望用更大的条形来表示这一点,而不是没有条形。
反转y轴限制使条形从顶部开始,但它并不能解决我的问题,因为较小的条形仍然与较小的数字相关联。是否有一种方法可以移动原点,并指定应从原点绘制条形到轴上适当的刻度?
这里的数据和代码真的不那么重要,但这是一个摘录:
![enter image description here](https://istack.dev59.com/L7YIv.webp)
反转y轴限制使条形从顶部开始,但它并不能解决我的问题,因为较小的条形仍然与较小的数字相关联。是否有一种方法可以移动原点,并指定应从原点绘制条形到轴上适当的刻度?
这里的数据和代码真的不那么重要,但这是一个摘录:
plt.rcParams['xtick.bottom'] = plt.rcParams['xtick.labelbottom'] = False
plt.rcParams['xtick.top'] = plt.rcParams['xtick.labeltop'] = True
barVals = [ 10**(-x) for x in range(10) ]
ticks = [x for x in range(10)]
plt.bar(ticks, barVals)
plt.yscale('log')
plt.ylim([1e-2, 1e-10])
#plt.axes().spines['bottom'].set_position(('data', 0))
plt.show()
这个图表中,数字越大的条形会更宽,数字越小的则会更窄。我本想绘制每个数值与最大值之间的差别,但我希望matplotlib/pyplot中有一些内置的方法可以实现这个功能。
在matlab中,我所需要的功能是设置轴基准值:
b = bar(ticks, barValues);
b(1).BaseValue = 1e0;