【问题标题】:Python matplotlib manual colormapPython matplotlib 手动颜色图
【发布时间】:2014-10-19 19:25:47
【问题描述】:

我有二维字段可以使用 matplotlib 底图在 python 中绘制。 字段的值从 0 到超过 1000 不等。是否可以创建具有固定渐变和颜色的手动颜色图?它应该看起来像:

对于值 - 设置颜色

  • 0 - 1 - 白色
  • 1 - 5 - 深绿色
  • 5 - 10 - 浅绿色
  • 10 - 25 - 黄色
  • 25 - 50 - 棕色
  • 50 - 100 - 橙色
  • 100 - 500 - 浅红色
  • 500 - 1000 - 深红色
  • > 1000 - 紫色

我是python新手。所以,欢迎提出任何建议。

【问题讨论】:

  • 我没有提到数据在 grib 文件中并且具有正确的经纬度坐标。所以,我需要在 lon-lat 地图上使用手动颜色条(如我上面指定的)绘制它们。

标签: python matplotlib-basemap color-mapping colormap


【解决方案1】:

This 正是您想要的。

您必须输入它的方式有点混乱,所以this 可能会更有帮助。

要获得大于 1000 的位,您需要屏蔽高于 1000 的值,并将其余的范围从 0 到 1000。

from matplotlib.colors import LinearSegmentedColormap
cMap = []
for value, colour in zip([0,1,5,10,25,50,100,500,1000],["White", "DarkGreen", "LightGreen", "Yellow", "Brown", "Orange", "IndianRed", "DarkRed", "Purple"]):
    cMap.append((value/1000.0, colour))

customColourMap = LinearSegmentedColormap.from_list("custom", cMap)

这就是您创建自定义颜色图所需的全部内容。要使用它,只需将其作为命名参数cmap

传递给绘图函数(无论您使用哪个)

这是它的样子。

【讨论】:

  • 投反对票有什么特别的原因吗?这指向文档的确切部分,该部分提供了问题所要求的内容......
  • 有人将手指滑到错误的箭头上 - 我发现这是一个很好的答案 (+1),包含大量信息。
  • 我没有提到数据在 grib 文件中并且具有正确的经纬度坐标。所以,我需要在 lon-lat 地图上使用手动颜色条(如我上面指定的)绘制它们
  • 什么意思?指定颜色条后,它将对数据进行规范化,并让颜色从 0 到 1。如果您希望它的上限为 1000,并使所有内容都高于紫色,那么您可以编辑您绘制的数据(IMO 是个坏主意,因为您隐藏了信息),或者您可以掩盖 1000 以上的数据并制作屏蔽数据紫色。您可以使用 numpy 掩码数组对其进行掩码。数据的格式对这个过程没有影响,cmap 关键字参数只是不断上升到类层次结构,直到它遇到需要它的东西(我认为artist)。
  • @AlexanderKurganskiy 你有什么样的情节并不重要。一旦有了要显示的数据的工作二维图,您只需将 ColorMap 传递给您正在使用的绘图函数的 cmap 关键字参数。
猜你喜欢
  • 1970-01-01
  • 2012-04-11
  • 1970-01-01
  • 1970-01-01
  • 2017-06-29
  • 2017-06-19
  • 2019-04-11
  • 2020-10-07
  • 1970-01-01
相关资源
最近更新 更多