當我四處尋找相同問題的解決方案時,我發現了一個看起來更干凈的方法(或者至少在精神上更接近最初的問題),即使用TextPath:from matplotlib import pyplot as plt
from matplotlib.text import TextPath
data = [["peach", 1.0, 1.0],
python安裝matplot、["apples", 19, 3.5],
["oranges", 7, 2.2],
["grapes", 23, 7.8]]
max_d2 = max([d[2] for d in data]) + 1e-3
matplotlib中文手冊?max_d1 = max([d[1] for d in data]) + 1e-3
cmap = plt.get_cmap('RdBu')
for d in data:
path = TextPath((0,0), d[0])
matplotlib繪圖、# These dots are to display the weakness below, remove for the actual question
plt.plot(d[1],d[2],'.',color='k')
plt.plot(d[1],d[2],marker=path,markersize=100, color=cmap(d[2]/max_d2))
plt.xlim([0,max_d1+5])
matplotlib中文教程。plt.ylim([0,max_d2+0.5])
這種解決方案本身有一些優點和缺點:主要缺點:正如圓點所顯示的,我無法正確地將文本居中。相反,所需的值是圖片的左下角。
主要優點:這沒有乳膠問題,使用“真正的”標記路徑,這意味著它可以很容易地用于標記線圖(但不是最初的問題)
代碼:import numpy as np
matplotlib的方法,x = np.cumsum(np.random.randn(100,5), axis=0)
plt.figure(figsize=(15,5))
for i in range(5):
label = TextPath((0,0), str(i), linewidth=1)
matplotlib在線,plt.plot(x[:,i], color='k')
plt.plot(np.arange(0,len(x),5),x[::5,i], color='k', marker=label, markersize=15, linewidth=0)
如果有很多行/標記,通過簡單的“文本”或“注釋”循環執行上述操作將非常緩慢,而這可以更好地擴展。
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态