Bunu yapmanın pek çok yolu var, ancak bu durumda bir proxy sanatçı kullanmak muhtemelen en kolay yoldur. Rasgele metni bir işaretçi olarak kullanabilirsiniz, bu yüzden satırlar yerine sahte Line2D
's show etiketlerine sahip olmak oldukça kolaydır.
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()
Size kendi gösterge tuşlarını tanımlayabilirsiniz. [Bu cevap] 'a bir göz atın (http://stackoverflow.com/a/27841028/2043505). – Schorsch
Teşekkürler, ancak bu cevap, farklı şekillerin lejant tuşları olarak nasıl kullanılacağını açıklıyor. Bu cevabı kullanarak alfasayısal harflerin nasıl uygulanacağından emin değilim. – Jonny