【问题标题】:matplotlib 3d contour_plot colour levelsmatplotlib 3d contour_plot 颜色级别
【发布时间】:2015-10-22 03:53:00
【问题描述】:

如何更改 3d matplotlib plot_surface 中离散颜色级别的数量?

例如

    normalisation = matplotlib.colors.Normalize(vmin=numpy.amin(Z), vmax=numpy.amax(Z))
    axis.plot_surface(X,Y,Z,cmap=matplotlib.pyplot.cm.Greys,norm=normalisation)

但是在归一化范围内有 N 个颜色级别?

【问题讨论】:

    标签: python matplotlib colors 3d contour


    【解决方案1】:

    尝试使用它进行标准化,其中 n 是级别数:

    cmap = matplotlib.pyplot.cm.Greys
    bounds = numpy.linspace(numpy.amin(Z),numpy.amax(Z), n + 1)
    normalisation = matplotlib.colors.BoundaryNorm(bounds, cmap.N)
    

    【讨论】:

    • 色图不需要标准化输入,那么边界规范(即返回整数)如何为色图提供标准化?另外,为什么边界规范有 2 个输入,边界是否需要等于 clap.N 才能使颜色到边界映射起作用?感谢您的回答,我只是不理解 BoundaryNorm 类。
    • 如果您查看 Colormap.__call__ 的文档字符串,您可以使用从 0 到 Colormap.N 的整数(即颜色图中的颜色数)或浮点数:“对于浮点数,X 应该是在区间 [0.0, 1.0] 中返回 RGBA 值 X*100 沿颜色图线的百分比。对于整数,X 应该在区间 [0, Colormap.N) 中以从索引为 @ 的颜色图中返回 indexed 的 RGBA 值987654325@。”
    • 至于为什么 bounds 不必等于 ncolors(在这种情况下是 cmap.N,但如果你想使用更少的颜色图,你可以选择较低的值),BoundaryNorm 缩放整数乘以 (len(ncolors) - 1) / (len(bounds) - 2)。
    • 谢谢艾米蒂加登。这会运行,并提供比 matplotlib.colors.Normalize 更多的颜色量化级别,但不是在例如 bounds 或 cmap.N 中指定的颜色量化级别。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-17
    • 1970-01-01
    • 2021-05-14
    • 1970-01-01
    • 2015-10-02
    • 2011-07-26
    • 2016-11-15
    相关资源
    最近更新 更多