嘿,我是新来的,也是用Python编码和绘图的新手,
我尝试使用matplolib的inset_zoom功能,但在自定义连接线时遇到了一些困难。我已经设法更改了连接线的线型和线宽。现在我试图通过设置set.visible()为True或False来更改默认绘制线的选择。但不是完全不显示set False连接线,而且我更喜欢它,如果线没有连接矩形的相同角,而是平行的边角(见下文)。
情节是为我的学士学位论文,我有点运行出来的时间,所以提前感谢您的帮助!
下面是一个代码片段:
#inset axes
x1,x2,y1,y2 = 0, 0.2, 0, 0.2 # subregion of origanal image
axin1 = ax[1].inset_axes([0.56, 0.04, 0.4, 0.4], xlim=(x1,x2), ylim=(y1,y2), xticks=[], yticks=[], xticklabels=[], yticklabels=[])
axin1.plot(x_H2_real_test, x_H2_pred_test, '.', markersize = 4)
axin1.plot(x_NH3_real_test, x_NH3_pred_test, '.', markersize = 4)
axin1.plot([0, 1], [0, 1], "-", color = 'crimson',lw=1,zorder=1 )
axin1.plot([bounds[0],bounds[1]], [bounds[0] * 1.1, bounds[1] * 1.1], "k--", lw=1)
axin1.plot([bounds[0],bounds[1]], [bounds[0] * 0.9, bounds[1] * 0.9], "k--", lw=1)
box, c1 = ax[1].indicate_inset_zoom(axin1, edgecolor="black", alpha=1,lw=0.7)
c1[0].set_visible(False)
c1[1].set_visible(True)
c1[2].set_visible(True)
c1[3].set_visible(False)
ax[1].indicate_inset_zoom(axin1, edgecolor="black", alpha=1,lw=0.7)
plt.setp([c1[:]], linestyle=":", lw=0.7)
#plt.legend()
#fig.suptitle("Parity Plot")
plt.tight_layout()
plt.show()
当前位置:x1c 0d1x
读取线标记了我希望连接器线连接的位置:
1条答案
按热度按时间t3psigkw1#
一种选择是使用一些
ConnectionPatch
示例创建您自己的连接,因为您可以精确地控制它们的绘制位置。由于我们不再需要原始的连接,我们现在可以使用
indicate_inset
而不是indicate_inset_zoom
;为此,我们需要定义自己绘制的框的边界,我们可以使用插入轴的x和y限制来完成。以你的例子(没有数据绘图部分)为例,这个方法看起来像这样:
其产生: