我正在使用Astropy WCS软件包对各种球形投影图进行一系列工作,并遇到了有关网格线的一些挫折感。由于网格线不总是与图像边界框相交或多个相交在相同的地方,因此它们可以不带标签或使标签变得难以辨认。我希望能够在每行中插入网格线标签,这与应用于等高线图的matplotlib.pyplot.clabel()函数非常相似,如在此matplotlib example中所示。我无法嵌入图像,因为我是新用户;我很抱歉。我知道我可以使用text(),figtext()或annotate()来放置标签,但由于clabel()工作,我认为功能已经存在,即使它没有被应用到网格线。将投影绘制在一边,没有人知道类似于clabel()的内联网格线标签可以应用于普通矩形图上的网格线吗?Matplotlib:投影绘制类似于clabel的网格线上的标签()
回答
要注释网格线,您可以使用主要刻度线的位置(因为这些位置是网格线的创建位置)。
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0,10)
y = np.sin(x)*10
fig, ax = plt.subplots()
ax.plot(x,y)
ax.grid()
for xi in ax.xaxis.get_majorticklocs():
ax.text(xi,0.8, "{:.2f}".format(xi), clip_on=True, ha="center",
transform=ax.get_xaxis_transform(), rotation=90,
bbox={'facecolor':'w', 'pad':1, "edgecolor":"None"})
for yi in ax.yaxis.get_majorticklocs():
ax.text(0.86,yi, "{:.2f}".format(yi), clip_on=True, va="center",
transform=ax.get_yaxis_transform(),
bbox={'facecolor':'w', 'pad':1, "edgecolor":"None"})
plt.show()
谢谢,这有助于显着!这并不是最理想的,因为必须对每个小区进行硬编码(以避免尽可能多地覆盖数据等),但这是朝正确方向迈出的一步。我觉得像一堆代码可以从clabel()中拉出来并应用到网格线而不是轮廓线,但是我不熟悉matplotlib知道如何做到这一点。 –
你总是可以使事情比他们需要的更复杂。 ['ContourLabeler'代码](https://github.com/matplotlib/matplotlib/blob/e66b5d86743e11323d2bbc1b6eb2117d2ef535a3/lib/matplotlib/contour.py#L57)长度为500行,旨在与'ContourSet'一起使用。为了使用它,网格线也需要是一个'ContourSet'。但与上述答案中的4行长代码相比,基本没有任何收益。 – ImportanceOfBeingErnest
- 1. matplotlib锤子投影绘制外地图
- 2. matplotlib 3d投影,刻度线标签超过边距
- 3. 在matplotlib底图投影上绘制椭圆
- 4. 使用Matplotlib绘制网格
- 5. matplotlib/pandas:在时间序列图中绘制沿着绘制线的线标签
- 6. 如何为matplotlib中的已绘制线设置标签?
- 7. 改变clabel的文本Matplotlib
- 8. 如何在xamarin格式的标签上绘制一条线
- 9. ItemizedOverlay似乎正在绘制一个“坏”的投影
- 10. 在投影图上绘制连接线(mapproj,gcIntermediate)
- 11. 用于网格线(不是轮廓)的颜色条在matplotlib中绘制阴谋
- 12. 绘制坐标线使用Matplotlib
- 13. Matplotlib:在线条边缘绘制标记
- 14. 在窗体上绘制线条网格
- 15. 在SphereGeometry上绘制网格线
- 16. matplotlib绘制等高线标签AxesSubplot外.EPS文件
- 17. 用Matplotlib绘制球体网格
- 18. 如何绘制System.Drawing.Bitmap形状的投影?
- 19. 当使用matplotlib绘制网格时没有垂直线
- 20. matplotlib中对应于类别标签的不同颜色的绘图坐标
- 21. 更改clabel的位置和标签
- 22. Matplotlib轮廓Clabel位置
- 23. Matplotlib不绘制曲线
- 24. Matplotlib程度与mollweide投影
- 25. 绘制的matplotlib
- 26. Cocos2d绘制线的网格设计
- 27. 绘制网格线的正确方法
- 28. 用XYDifferenceRenderer顶部的网格线绘制
- 29. 在绘制3d表面时去除伪影/网格线
- 30. 如何在Matlab中绘制类似于晶格结构的树?
'clabel(CS,** kwargs)' 添加标签到轮廓线在'cs',其中'cs'是由'contour'返回的ContourSet对象。因此,您有两种选择:**(a)**使用等高线图绘制网格线,然后使用clabel标注线**(b)**使用普通网格线并编写自定义函数来标记线。你需要哪一个帮助? – ImportanceOfBeingErnest
顺便说一下,新用户可以发布图片,那些将显示为链接而不是内联。 – ImportanceOfBeingErnest
@ImportanceOfBeingErnest我不能包含两个以上的链接,或者我会包含一些图片。我没有想过选项**(a)**;我喜欢这个想法,但是觉得这样做很难实现,以便在没有无数次调整的情况下为许多不同的地块工作。所以我想和**(b)**一起去;我希望找到一些聪明的方式来从clabel()复制功能,而不是从头开始编写自定义网格线标记功能。 –