当前位置: 首页 > 面试题库 >

如何转换(或缩放)轴值并在matplotlib中重新定义刻度频率?

宋飞文
2023-03-14
问题内容

我正在显示jpg图像(如果相关,我会将其旋转90度),并且当然,轴会显示像素坐标。我想转换轴,以便不显示像素数,而是显示我选择的单位-
弧度,度数,或者在我的情况下是天文坐标。我知道从像素到(例如)度的转换。这是我的代码当前的摘要:

import matplotlib.pyplot as plt 
import Image
import matplotlib
thumb = Image.open(self.image)
thumb = thumb.rotate(90)
dpi = plt.rcParams['figure.dpi']
figsize = thumb.size[0]/dpi, thumb.size[1]/dpi
fig = plt.figure(figsize=figsize)
plt.imshow(thumb, origin='lower',aspect='equal')
plt.show()

…因此,从此以后,我可以接受matplotlib将在轴上打印的每个值,然后将其更改/替换为字符串以输出吗?我想针对特定的坐标格式进行此操作-
例如,我希望读取10 26‘24’‘(即,度,arcmins,arcsecs)而不是10.44(度)角

最后,关于这个主题,我想控制情节中的滴答频率。Matplotlib可能每50个像素打印一次轴值,但是我真的希望每个(例如)度数都打印一次。

听起来好像我想用希望显示的像素值及其转换值(度等)定义某种数组,并控制xmin / xmax范围内的采样频率。

在堆栈溢出方面有任何matplotlib专家吗?如果是这样,非常感谢您的帮助!为了使这成为一次更多的学习体验,我非常感谢被引导进入有关此类matplotlib问题的教程等方向。我发现自己对轴,轴,人物,艺术家等感到非常困惑!

干杯,

戴夫


问题答案:

看起来您正在处理matplotlib.pyplot接口,这意味着您将能够绕过与艺术家,斧头等的大部分处理。您可以使用以下matplotlib.pyplot.xticks命令来控制刻度线的值和标签:

tick_locs = [list of locations where you want your tick marks placed]
tick_lbls = [list of corresponding labels for each of the tick marks]
plt.xticks(tick_locs, tick_lbls)

对于您的特定示例,您必须计算出相对于原始图的单位(即像素)的刻度线(因为您正在使用imshow)-您说过知道如何做到这一点。

我还没有处理的图像很多,但你可以使用不同的绘制方法(例如pcolor),使您可以提供xy信息。这可能会为您提供更多用于指定图像单位的选项。

对于教程,您最好浏览一下matplotlib库-找到喜欢的东西,并阅读产生它的代码。我们办公室里的一个人最近买了一本关于Python可视化的书-
也许值得一看。

我通常认为所有各个方面的方式如下:

  • AFigure是所有Axes
  • AnAxes是您实际绘制(即绘图)显示的空间
  • AnAxis是实际xy
  • 艺术家?对于我来说,这在界面中太深了:尽管我很少pyplot在生产区中使用该模块,但我还不必担心这些问题。


 类似资料:
  • 我正在尝试修复python如何绘制数据。 说 和 然后我会做: x轴的刻度以5为间隔绘制。有没有办法让它显示1的间隔?

  • 我正在尝试修复python如何绘制数据。 说 和 然后我会做: x轴的刻度以5的间隔绘制。有没有办法让它显示1的间隔?

  • 问题内容: 我正在尝试修复python如何绘制数据。 说 和 然后我会做: 并且x轴的刻度线以5的间隔绘制。是否有办法使其显示1的间隔? 问题答案: 你可以使用以下命令显式设置要在刻度线打勾的位置: 例如, (以防万一,使用它而不是Python的range函数,它们是浮点数而不是整数。) 的(或)功能将自动设置默认x和y限制。如果你希望保留这些限制,而只是更改刻度线的步长,则可以用来发现已设置的限

  • 问题内容: 我只想绘制数组的一部分,固定x部分,但让y部分自动缩放。我尝试如下所示,但它不起作用。 有什么建议? 问题答案: 自动缩放总是使用整个数据范围,因此y轴将按y数据的全部范围缩放,而不仅仅是x范围内的缩放。 如果要显示数据的子集,那么仅绘制该子集可能是最简单的:

  • 问题内容: 如何在线性与线性图上仅在y轴上旋转次刻度? 当我使用该功能打开次刻度时,它们同时出现在x和y轴上。 问题答案: 没关系,我知道了。

  • 我需要移动轴中所有刻度线的标签(),使文本位于其自己的刻度线和下一个刻度线的中间。 我正在使用Roland的甘特图控件(经过一些修改)和Christian Schudt的DateAxis作为我的X轴。我的目标是根据Date值绘制甘特图(忽略时间;所有时间值都被截断)。 我的甘特图对每个任务都有一个“开始日期”和“结束日期”(即在图表上,它由一个条形图表示)。 考虑一下: 我有一个从2月1日开始的任