生成内联标签值后,是否可以编辑等高线图的内联标签?

用户7345804

下面是生成带有内联标签的等高线图的示例代码。我想知道如何编辑内联标签。

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-10, 10, 100)
y = np.linspace(-10, 10, 100)

def z_func(x, y):
    """ z = z(x,y) ==> Z = Z(X, Y) """
    X, Y = np.meshgrid(x, y)
    Z = np.sqrt(X**2 + Y**2)
    return X, Y, Z

def get_xyz_contour_plot(X, Y, Z, cmap='plasma', ncontours=6, linecolor='white'):
    """ Generates a filled contour plot with inline labels """
    plt.contourf(X, Y, Z, cmap=cmap)
    contours = plt.contour(X, Y, Z, ncontours, colors=linecolor)
    plt.clabel(contours, inline=True, fontsize=8)
    plt.show()


X, Y, Z = z_func(x, y)
get_xyz_contour_plot(X, Y, Z)

上面的代码生成了一个看起来像这样的图如果我想在内联标签中添加一个负号,我可以在上面的例子中应用一个负号。但出于我的实际目的,我正在制作与卡方值相关的 pvalue 的等高线图。代码太长,无法在此处发布(因此是上面的替代示例),但我最小化了与卡方相关的负 pvalue 而不是卡方本身(通过 scipy)。因此,我的函数产生负输出,内联标签显示负号。

是否可以在生成内联标签值后通过删除负号来编辑内联标签?例如,如何在不更改 的情况下向上述代码中的内联标签添加负号z_func

存在的重要性欧内斯特

您可以指定 afmtclabel,它可能是一个 matplotlib 格式化程序实例。您可以将 aFuncFormatter与函数一起使用,它只是在格式化之前反转值的符号。

fmt_func = lambda x,pos: "{:1.3f}".format(-x)
fmt = matplotlib.ticker.FuncFormatter(fmt_func)

plt.clabel(contours, inline=True, fontsize=8, fmt=fmt)

完整示例:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.ticker

x = np.linspace(-10, 10, 100)
y = np.linspace(-10, 10, 100)

def z_func(x, y):
    """ z = z(x,y) ==> Z = Z(X, Y) """
    X, Y = np.meshgrid(x, y)
    Z = np.sqrt(X**2 + Y**2)
    return X, Y, Z

def get_xyz_contour_plot(X, Y, Z, cmap='plasma', ncontours=6, linecolor='white'):
    """ Generates a filled contour plot with inline labels """
    plt.contourf(X, Y, Z, cmap=cmap)
    contours = plt.contour(X, Y, Z, ncontours, colors=linecolor)

    fmt_func = lambda x,pos: "{:1.3f}".format(-x)
    fmt = matplotlib.ticker.FuncFormatter(fmt_func)

    plt.clabel(contours, inline=True, fontsize=8, fmt=fmt)
    plt.show()


X, Y, Z = z_func(x, y)
get_xyz_contour_plot(X, Y, Z)

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章