而不是单词或数字是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 LocatableAxes XTICK标签
- 2. 绘图覆盖坐标轴属性'XTick'
- 3. Matplotlib:对齐xtick标签
- 4. 使用matplotlib绘制3d图中的标签点
- 5. 如何将标签添加到绘图
- 6. 绘制图形使用matplotlib
- 7. python使用matplotlib绘图
- 8. 如何使用matplotlib绘制热图?
- 9. 如何使用matplotlib绘制折线图
- 10. 如何使用matplotlib绘制图形?
- 11. 在R绘图子绘图上获取单独的轴标签
- 12. matplotlib:如何绘制图像
- 13. Matplotlib和绘图
- 14. Matplotlib绘图
- 15. 使用ASCII算法的简单绘图
- 16. 如何在使用matplotlib的pyplot绘制的图上设置x轴标签?
- 17. 使用matplotlib和numpy将图像和标签绘制为条形图
- 18. 如何让matplotlib的流/箭图在图像坐标中绘图
- 19. 如何在matplotlib中的另一个绘图上添加绘图?
- 20. JOGL中的绘图标签
- 21. 带标签的绘图线
- 22. Matplotlib - 绘图线与绘图框合并
- 23. Python matplotlib,获取xtick标签的位置
- 24. 可变线宽的Matplotlib绘图
- 25. 使用matplotlib绘制折线图的图例和标题
- 26. 用Python和Matplotlib改变绘图
- 27. 绘制tuplets名单的直方图matplotlib
- 28. 将背景图像绘制到matplotlib图
- 29. 如何用matplotlib绘制多个图像?
- 30. 如何利用matplotlib绘制Grotrian图