由于空间的原因,我有时会以下列样式绘制出图:
fig, ax = plt.subplots(figsize=(3, 3))
ax.plot([0,1], [1000, 1001])
ax.set_xticks([0, 1])
ax.set_yticks([1000, 1001])
ax.set_xlabel("x", labelpad=-8)
ax.set_ylabel("y", labelpad=-18)
在这里,我只保留了标记X/Y域边界的刻度,并使用labelpad
关键字参数手动对齐xlabel
和ylabel
,以便x和y轴标签与刻度标签直观对齐。
请注意,我不得不对不同的轴使用不同的填充量,因为y刻度标签1000
和1001
的长度比x刻度标签0
和1
的高度更远离轴,而且x轴标签的垂直位置和y轴标签的水平位置都是相对于它们的通常位置而言的,其将刚好超过刻度标签的范围。
我想知道,是否有一种方法可以自动执行此过程,并且可以精确地执行,而不是直观地执行?例如,如果labelpad
相对于脊线,这将是非常好的,或者如果有一种方法可以确定刻度和刻度标签远离脊线的范围,该数字也可以用于自动执行此操作。
使用ax.yaxis.set_label_coords
可以获得类似的效果,但这会相对于轴的变换来变换位置,因此取决于轴的大小,而记号是相对于脊线绝对定位的。
1条答案
按热度按时间jecbmhm31#
您使用
ax.{x,y}axis.set_label_coords
所要遵循的路径几乎就在那里!您所需要做的就是将transAxes
转换 Package 在offset_copy
中,然后提供一个偏移量,该偏移量是当前tick长度+tick bbox周围任何空格的组合。使用转换
使用较长的分笔成交点进行测试
更长的滴答声和更高的DPI