【问题标题】:Change format/units of co-ords on matplotlib imshow在 matplotlib imshow 上更改坐标的格式/单位
【发布时间】:2021-02-22 11:16:28
【问题描述】:

我希望光标的坐标是整数而不是 5.75e+03。 我和这个用户 (matplotlib coordinates format) 有同样的问题,我使用了向他们建议的对他们有用的解决方案,但它对我不起作用。这就是解决方案

ax.format_coord = lambda x, y: "({0:f}, ".format(y) +  "{0:f})".format(x)

这是我的情节:

【问题讨论】:

    标签: python matplotlib cursor coordinates interactive


    【解决方案1】:

    您可能希望使用格式:.0f 而不仅仅是:f。后者不固定小数位数。默认情况下,matplotlib 会根据可用空间自动选择格式。如果调整窗口大小,默认格式可能会改变。但这种选择似乎并非在所有情况下都合乎逻辑。

    在 Python 3.6 中引入了f-strings,它简化了格式化的编写方式。有关可用格式说明符的详细列表,请参阅this document

    这是一个最小的例子:

    from matplotlib import pyplot as plt
    import numpy as np
    
    plt.imshow(np.random.rand(3, 5), extent=(0, 5000, 0, 3000))
    plt.gca().format_coord = lambda x, y: f"({x:.0f}, {y:.0f})"
    plt.show()
    

    对于较旧的 Python 版本,您可以将 format_coord 设置为 lambda x, y: "({0:.0f}, {1:.0f})".format(x, y)

    【讨论】:

    • 感谢您的回复。我尝试了您的建议,但不幸的是不起作用。有趣的是你所说的可用空间。我最近更改了服务器(全部由同事设置,因为我对此不太了解)并且在我们之前的设置/服务器上从未遇到过这个问题。此外,我不能再拉伸绘图,当我尝试时它们只是空白,而我可以在我的旧服务器上。我刚刚用更大的无花果尺寸重新绘制,现在可以看到整数,但是我想尝试获得所有无花果尺寸的整数。我去看看那个文件。谢谢。
    • 不起作用我的意思是没有任何改变,并且坐标仍然以科学记数法显示。很抱歉没有尽快添加此详细信息。
    • 您是否尝试在未修改的情况下运行我的示例代码?请注意,在您的图像中,您似乎使用了plt.imshow,它利用了“当前的斧头”,而您使用了其他一些未指定的ax 来设置format_coord。您可能希望将完整的独立示例代码添加到您的问题帖子中。
    • 对不起,我错过了那部分。它现在正在工作。非常感谢
    猜你喜欢
    • 1970-01-01
    • 2017-07-22
    • 2013-09-12
    • 2013-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多