Có rất nhiều cách để làm điều đó, nhưng có thể dễ dàng nhất khi sử dụng một nghệ sĩ proxy trong trường hợp này. Bạn có thể sử dụng văn bản tùy ý làm điểm đánh dấu, do đó, khá dễ dàng để có các nhãn hiển thị giả của Line2D
thay vì dòng.
Như một ví dụ (phần lớn trong số này là tương đối "ưa thích" gọi đến 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()
Nguồn
2015-02-26 15:03:25
Bạn có thể xác định bạn sở hữu khóa chú giải. Hãy xem [câu trả lời này] (http://stackoverflow.com/a/27841028/2043505). – Schorsch
Cảm ơn, nhưng câu trả lời đó giải thích cách sử dụng các hình dạng khác nhau làm khóa chú giải. Tôi không chắc chắn làm thế nào để thực hiện chữ cái và chữ số bằng cách sử dụng câu trả lời đó. – Jonny