如何转换(或缩放)轴值并重新定义matplotlib中的滴答频率?

Dav*_*ave 20 python matplotlib

我正在显示一个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()
Run Code Online (Sandbox Code Playgroud)

...所以继续这个,我可以取matplotlib在轴上打印的每个值,并用字符串更改/替换它来输出吗?我想为特定的坐标格式做这个 - 例如,而不是10.44(度)的角度,我希望它读取10 26'24''(即,度,arcmins,arcsecs)

最后在这个主题上,我想要在情节上控制嘀嗒频率.Matplotlib可能每隔50个像素打印一次轴值,但我真的想要每个(例如)度数.

听起来我想要定义某种类型的数组,其中包含我想要显示的像素值及其转换值(度等),可以在xmin/xmax范围内控制采样频率.

Stack Overflow上有matplotlib专家吗?如果是这样,非常感谢您的帮助!为了使这个学习体验更加丰富,我真的很感激在这种matplotlib问题的教程方向上受到了推动.我发现自己对轴,轴,人物,艺术家等感到非常困惑!

干杯,

戴夫

Tim*_*omb 33

看起来你正在处理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)
Run Code Online (Sandbox Code Playgroud)

对于您的特定示例,您将必须计算刻度线相对于原始绘图的单位(即像素)的内容(因为您正在使用imshow) - 但是您说您知道如何执行此操作.

我没有处理过很多图像,但您可以使用不同的绘图方法(例如pcolor)来提供x和提供y信息.这可能会为您提供更多选项来指定图像的单位.

对于教程,您最好浏览matplotlib库 - 找到您喜欢的内容,并阅读生成它的代码.我们办公室里的一个人最近买了一本关于Python可视化的书- 这可能值得一看.

我通常认为所有各种部分的方式如下:

  • A Figure是所有人的容器Axes
  • 一个Axes是你绘制的空间(即你的情节)实际出现的空间
  • 一个Axis是实际xy
  • 艺术家?对我来说,界面太深了:即使我很少pyplot在生产图中使用该模块,我也从未担心过这些问题.