【发布时间】:2018-08-17 17:23:27
【问题描述】:
我想用 4 组数据制作一个相当直截了当的图,其中两个在主图中,两个在插入图中(以不同的比例)。
这是起始代码::
w1snr_limit = np.arange(0, 50, 0.5)
w2snr_limit = np.arange(0, 50, 0.5)
w3snr_limit = np.arange(0, 10, 0.5)
w4snr_limit = np.arange(0, 10, 0.5)
w1snr_percent = w1snr_limit**(1/2.)
w2snr_percent = w2snr_limit**(1/2.)
w3snr_percent = w3snr_limit**(1/3.)
w4snr_percent = w4snr_limit**(1/4.)
fig, ax = plt.subplots(figsize=(8.0, 8.0))
xmin = 0.00
xmax = 50.00
ymin = 0.00
ymax = 100.00
ax.scatter(w1snr_limit, w1snr_percent, s=ms, alpha=0.85, label='W1 SNR')
ax.scatter(w2snr_limit, w2snr_percent, s=ms, alpha=0.85, label='W2 SNR')
ax.set_xlim((xmin, xmax))
ax.set_ylim((ymin, ymax))
然后会有这个插图::
axins = zoomed_inset_axes(ax, 2.0, loc='lower right')
# sub region of the original image
x1, x2, y1, y2 = 0.0, 10., 0.0, 20.0
axins.set_xlim(x1, x2)
axins.set_ylim(y1, y2)
axins.scatter(w3snr_limit, w3snr_percent, s=ms, alpha=0.85, label='W3 SNR', color='green')
axins.scatter(w4snr_limit, w4snr_percent, s=ms, alpha=0.85, label='W4 SNR', color='red')
但是我首先很难正确放置插入图(即两个 x 轴都被咀嚼),而且我不清楚如何将所有 4 个数据集放入同一个图例中
handles, labels = ax.get_legend_handles_labels()
handles = [handles[0], handles[1], handles[2], handles[3]]
labels = [labels[0], labels[1], labels[2],labels[3]]
ax.legend(handles,labels,loc=2)
导致一个
IndexError: list index out of range
错误。只是为了整理这些东西没什么帮助?
【问题讨论】:
-
好的,当然。但老实说,我不明白我如何可以使用更少的代码(最少)并且仍然清晰(完整)。
-
由于未定义的变量,我无法运行代码,所以它不完整。 “最低限度”必须理解为“不超过必要”。
-
更新了示例以定义变量。
标签: python matplotlib legend