Существует много способов сделать это, но в этом случае, возможно, проще всего использовать прокси-исполнителя. Вы можете использовать произвольный текст в качестве маркера, поэтому довольно легко получить поддельные 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()
Вы можете определить свои собственные ключи ключей. Взгляните на [этот ответ] (http://stackoverflow.com/a/27841028/2043505). – Schorsch
Спасибо, но этот ответ объясняет, как использовать разные формы в качестве ключей для ключей. Я не уверен, как реализовать буквенно-цифровые буквы, используя этот ответ. – Jonny