gpt4 book ai didi

python - 在 Matplotlib、Python 中完全自定义图例

转载 作者:太空狗 更新时间:2023-10-29 21:24:04 29 4
gpt4 key购买 nike

我使用 Matplotlib 基本上是为了绘制“图片”,而不是用于绘制数据。

在“图片”中,我使用 plt.annotate 来标记图片的某些部分。

我现在想制作一个完全自定义的图例来指示符号的含义。

有没有一种方法可以定义自定义handleslabels,其中handles 必须是字母数字字母而不是像 这样的普通标记>'*''o'

这可能还是我必须使用 plt.annotation 手动构建图例?

最佳答案

有很多方法可以做到这一点,但在这种情况下使用代理艺术家可能是最简单的方法。您可以使用任意文本作为标记,因此很容易使用伪造的 Line2D 显示标签而不是线条。

举个例子(其中大部分是对 annotate 的相对“花哨”的调用):

import numpy as np
import matplotlib
import matplotlib.pyplot as plt

def main():
labels = ['A', 'B', 'C']
positions = [(2, 5), (1, 1), (4, 8)]
descriptions = ['Happy Cow', 'Sad Horse', 'Drooling Dog']

# Plot the data, similar to what you described...
fig, ax = plt.subplots()
ax.imshow(np.random.random((10, 10)), interpolation='none')
for label, xy in zip(labels, positions):
ax.annotate(label, xy, xytext=(20, 20), size=15,
textcoords='offset points',
bbox={'facecolor':'white'},
arrowprops={'arrowstyle':'->'})

# Create a legend with only labels
proxies = [create_proxy(item) for item in labels]
ax.legend(proxies, descriptions, numpoints=1, markerscale=2)

plt.show()

def create_proxy(label):
line = matplotlib.lines.Line2D([0], [0], linestyle='none', mfc='black',
mec='none', marker=r'$\mathregular{{{}}}$'.format(label))
return line

main()

enter image description here

关于python - 在 Matplotlib、Python 中完全自定义图例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28739608/

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