这是一个相当简单的问题。我正在努力创建一个具有多个插入轴的 Matplotlib 图。
我已经删除了刻度线,以便每个插入轴的插入脊柱以 90 度角相交。但是,当您向该图添加图例时,它会添加一个图例对象,图例对象的每个“边缘”都有略微圆形的脊椎连接。
是否有一种简单的方法可以为插入轴或更普遍的轴的脊柱获得类似效果?
我的代码:
fig, e = plt.subplots(figsize=(10, 5))
a = e.inset_axes([.1, .1, .1, .2])
b = e.inset_axes([.3, .1, .1, .2])
for ax in [a, b]:
ax.set_yticks([])
ax.set_xticks([])
当前输出:
期望的输出:
最佳答案
一个想法是隐藏刺,画一个FancyBboxPatch
在同一个地方。设置 clip_on=False
可避免框被不当剪裁。
将圆角框分配给 ax_a.patch
可以剪裁主斧和插图斧内的对象。
这是修改左插入轴的示例代码。
import matplotlib.pyplot as plt
from matplotlib.patches import FancyBboxPatch
import numpy as np
fig, ax_e = plt.subplots(figsize=(10, 5))
ax_a = ax_e.inset_axes([.1, .1, .1, .2])
ax_b = ax_e.inset_axes([.3, .1, .1, .2])
for ax in [ax_a, ax_b]:
ax.set_yticks([])
ax.set_xticks([])
for s in ax_a.spines:
ax_a.spines[s].set_visible(False)
p_bbox = FancyBboxPatch((0, 0), 1, 1,
boxstyle="round,pad=-0.0040,rounding_size=0.2",
ec="black", fc="white", clip_on=False, lw=1,
mutation_aspect=1,
transform=ax_a.transAxes)
ax_a.add_patch(p_bbox)
ax_a.patch = p_bbox
t = np.linspace(0, 2 * np.pi, 100)
ax_a.plot(np.sin(3 * t), np.sin(4 * t)) # drawing some curve
ax_a.plot([-2, 2], [-2, 2], 'g', lw=10, alpha=0.3) # diagonal line to check the clipping in the corners
ax_a.set_xlim(-1.1, 1.1)
ax_a.set_ylim(-1.1, 1.1)
ax_e.set_facecolor('tomato') # show the clipping around the inset axes
plt.show()
关于python - 如何舍入 Matplotlib 轴脊柱的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70041798/