gpt4 book ai didi

python - 更改图例中椭圆 handle 的形状

转载 作者:行者123 更新时间:2023-12-01 08:52:24 25 4
gpt4 key购买 nike

我正在尝试在单个图例中绘制一些轮廓和椭圆的标签。我几乎就在那里(下面的代码),但我希望与图例中的椭圆相关的形状是一条直线,而不是默认的矩形。

如何更改此设置?

<小时/>
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Ellipse

# Random data
ndim, nsamples = 2, 1000
samples = np.random.randn(ndim * nsamples).reshape([nsamples, ndim])

fig, ax = plt.subplots()
x, y = samples.T
H, X, Y = plt.hist2d(x, y, bins=20, cmap=plt.get_cmap('Greys'))[:-1]

# Plot two contours
contour = ax.contour(
H.T, levels=(5, 10), extent=[x.min(), x.max(), y.min(), y.max()])

# Plot ellipse
ellipse = Ellipse(xy=(0., 0.), width=3., height=2, angle=45, edgecolor='r', fc='None', label='ellipse')
ax.add_patch(ellipse)

# Get ellipse's handle and label
ellip, ellip_lbl = ax.get_legend_handles_labels()

# Plot legend
plt.legend(ellip + list(reversed(contour.collections)), ellip_lbl + ['1s', '2s'])

plt.show()

enter image description here

最佳答案

下面是基于this的解决方案回答。这里的主要思想是使用 ls="-",通过绘制一个空列表并捕获它的句柄。将椭圆的面片存储在 ax1 中并用它来获取标签。

ellipse = Ellipse(xy=(0., 0.), width=3., height=2, angle=45, edgecolor='r', fc='None', label='ellipse')
ax1 = ax.add_patch(ellipse)

# Get ellipse's handle and label
ellip, ellip_lbl = ax.get_legend_handles_labels()

plt.legend(handles = [plt.plot([],ls="-", color='r')[0]] + list(reversed(contour.collections)),
labels=[ax1.get_label()] + ['1s', '2s'])

enter image description here

关于python - 更改图例中椭圆 handle 的形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53025428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com