在对数图上设置书脊位置

时间:2019-05-05 19:29:54

标签: python matplotlib

我想将matplotlib图的轴刺的位置(例如,“左”)更改为特定的数据值。我知道我可以为此目的使用matplotlib.spines.set_position(),并且在线性图中可以正常工作。但是,由于某种原因,在对数(或半对数)图上未显示轴。以下代码和屏幕截图演示了该问题: demo spine position on log plot

# test axis location on log plot
from matplotlib import pyplot as plt

figure = plt.figure()
axes = figure.add_subplot(121)
handle, = axes.plot([0.2, 1], [1, 2], 'ro')
axes.xaxis.set_label_text('X')
axes.yaxis.set_label_text('Y')
axes.set_xscale('log')
axes.set_xlim(0.02, 2)
axes.spines['left'].set_position(('data', 0.1))
axes.spines['left'].set_linewidth(3)
axes.set_title('log')

axes2 = figure.add_subplot(122)
handle2, = axes2.plot([0.2, 1], [1, 2], 'ro')
axes2.xaxis.set_label_text('X')
axes2.yaxis.set_label_text('Y')
axes2.set_xlim(0, 2)
axes2.spines['left'].set_position(('data', 0.5))
axes2.spines['left'].set_linewidth(3)
axes2.set_title('linear')

plt.show()

在左侧的半对数图中,“左”脊椎不再显示,而在右侧的线性图中的正确位置显示。解决方法是,我可以将数据坐标转换为轴坐标,然后使用set_position(('axes', xxx )),其中 xxx 是指转换后的坐标。但是,为了实现图的动态缩放和缩放,我宁愿将书脊设置为特定的数据值,而不是轴值。

我在Windows平台上使用matplotlib v 3.0.2和Python 3.6。该问题似乎与(但有区别)有关: Positions of spines in matplotlib Setting spines in matplotlibrc

0 个答案:

没有答案