我正在显示一个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.44(度)的角度,我希望它读取10 26'24''(即,度,arcmins,arcsecs)
最后在这个主题上,我想要在情节上控制嘀嗒频率。 Matplotlib可能每隔50个像素打印一次轴值,但我真的想要每个(例如)度数。
听起来我想定义某种类型的数组,其中包含我想要显示的像素值及其转换值(度等),可控制xmin / xmax范围内的采样频率。
Stack Overflow上有matplotlib专家吗?如果是这样,非常感谢您的帮助!为了使这个学习体验更加丰富,我真的很感激在这种matplotlib问题的教程方向上受到了推动。我发现自己对轴,轴,人物,艺术家等感到非常困惑!
干杯,
戴夫
答案 0 :(得分: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)
对于您的特定示例,您将必须计算刻度线相对于原始绘图的单位(即像素)的内容(因为您使用imshow
) - 您说您知道如何但是,这样做。
我没有多处理图像,但您可以使用不同的绘图方法(例如pcolor
),以便提供x
和y
信息。这可能会为您提供更多选项来指定图像的单位。
对于教程,你最好查看matplotlib gallery - 找到你喜欢的东西,并阅读产生它的代码。我们办公室里的一个人最近买了一本关于Python visualization的书 - 可能值得一看。
我通常会想到各种各样的方式如下:
Figure
是所有Axes
Axes
是您绘制的内容(即您的情节)实际显示的空间Axis
是实际的x
和y
轴pyplot
模块,我也从来不用担心这些。