而不是單詞或數字是x軸的刻度標籤,我想繪製一個簡單的圖形(由線條和圓圈組成)作爲每個x刻度的標籤。這可能嗎?如果是這樣,matplotlib中最好的方法是什麼?如何使用matplotlib將繪圖的xtick標籤變成簡單的繪圖?
10
A
回答
23
我會刪除勾號標籤並用patches替換文本。下面是執行此任務的一個簡單的例子:
import matplotlib.pyplot as plt
import matplotlib.patches as patches
# define where to put symbols vertically
TICKYPOS = -.6
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(range(10))
# set ticks where your images will be
ax.get_xaxis().set_ticks([2,4,6,8])
# remove tick labels
ax.get_xaxis().set_ticklabels([])
# add a series of patches to serve as tick labels
ax.add_patch(patches.Circle((2,TICKYPOS),radius=.2,
fill=True,clip_on=False))
ax.add_patch(patches.Circle((4,TICKYPOS),radius=.2,
fill=False,clip_on=False))
ax.add_patch(patches.Rectangle((6-.1,TICKYPOS-.05),.2,.2,
fill=True,clip_on=False))
ax.add_patch(patches.Rectangle((8-.1,TICKYPOS-.05),.2,.2,
fill=False,clip_on=False))
這將導致如下圖所示:
關鍵是要設置clip_on
到False
,否則patches
軸外將不所示。補丁的座標和大小(半徑,寬度,高度等)將取決於您的座標軸在圖中的位置。例如,如果您正在考慮對子圖進行此操作,則需要對補丁放置進行敏感處理,以便不與其他任何軸重疊。您可能值得花時間調查Transformations,並在其他單位(軸,圖或顯示)中定義位置和大小。
如果您有要用於符號的特定圖像文件,則可以使用BboxImage
類創建要添加到軸的藝術家,而不是修補程序。比如我做了下面的腳本一個簡單的圖標:
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(1,1),dpi=400)
ax = fig.add_axes([0,0,1,1],frameon=False)
ax.set_axis_off()
ax.plot(range(10),linewidth=32)
ax.plot(range(9,-1,-1),linewidth=32)
fig.savefig('thumb.png')
生產這一形象:
然後,我創建了我想要的刻度標籤大小我和位置的BboxImage想:
lowerCorner = ax.transData.transform((.8,TICKYPOS-.2))
upperCorner = ax.transData.transform((1.2,TICKYPOS+.2))
bbox_image = BboxImage(Bbox([lowerCorner[0],
lowerCorner[1],
upperCorner[0],
upperCorner[1],
]),
norm = None,
origin=None,
clip_on=False,
)
注意到我如何使用transData
轉變,從數據單位轉換爲顯示單元,whic h在Bbox
的定義中是必需的。
現在我的圖像中讀出使用imread
例程,並且它的結果(一個numpy的陣列)設置爲bbox_image
數據和藝術家添加到軸:
bbox_image.set_data(imread('thumb.png'))
ax.add_artist(bbox_image)
這導致更新圖:
如果直接使用圖像,確保導入所需的類和方法:
from matplotlib.image import BboxImage,imread
from matplotlib.transforms import Bbox
相關問題
- 1. Matplotlib:對齊xtick標籤
- 2. 使用matplotlib繪製3d圖中的標籤點
- 3. 如何將標籤添加到繪圖
- 4. python使用matplotlib繪圖
- 5. 繪製圖形使用matplotlib
- 6. 如何使用matplotlib繪製熱圖?
- 7. 在R繪圖子繪圖上獲取單獨的軸標籤
- 8. Matplotlib和繪圖
- 9. 使用ASCII算法的簡單繪圖
- 10. 使用matplotlib和numpy將圖像和標籤繪製爲條形圖
- 11. 如何讓matplotlib的流/箭圖在圖像座標中繪圖
- 12. JOGL中的繪圖標籤
- 13. 帶標籤的繪圖線
- 14. Matplotlib - 繪圖線與繪圖框合併
- 15. 使用matplotlib繪製折線圖的圖例和標題
- 16. 如何利用matplotlib繪製Grotrian圖
- 17. 用熊貓和matplotlib繪圖
- 18. 用Matplotlib繪製圖表?
- 19. matplotlib/pandas:在時間序列圖中繪製沿着繪製線的線標籤
- 20. 如何在matplotlib使用單個繪圖命令
- 21. Matplotlib:使用循環繪製的8個繪圖的相同標題
- 22. 將標籤名稱繪製到由plot3d(rgl)生成的3D繪圖上
- 23. R繪圖標籤格式
- 24. 標籤ECDF繪圖點
- 25. 如何使用html5畫布標籤導出繪製的圖像?
- 26. 將標籤*行號*添加到繪圖
- 27. MpChart在條形圖的Xaxis中將圖標繪製爲標籤
- 28. iOS繪製一個簡單的圖像變成模糊使用Xamarin C#
- 29. 使用Matplotlib進行多索引繪圖
- 30. matplotlib繪圖中使用多種顏色