【问题标题】:Matplotlib Scatter plot filter color (Colorbar)Matplotlib 散点图滤镜颜色(Colorbar)
【发布时间】:2015-04-19 02:50:20
【问题描述】:

我有一些数据,比如 xyz。都是1D 数组。我用z作为颜色做了一个散点图;

 import matplotlib.pyplot as plt
 plt.scatter(x,y,c=z,alpha = 0.2)
 plt.xlabel("X")
 plt.ylabel("Y")
 plt.ylim((1.2,1.5))
 plt.colorbar() 

z 的值已标准化,并且介于 -11 之间。我附上了下图。

我的问题是;我如何过滤颜色,让颜色值在-0.250.25 之间的点从图中消失(即将颜色设置为白色)。

如果需要回答此问题,可以提供 xyz 的值。感谢您的时间。

【问题讨论】:

  • 屏蔽数组可能是一个不错的选择:wiki.scipy.org/Cookbook/Matplotlib/…
  • 你可以制作一个自定义颜色条,或者使用一个已经在 0 左右具有浅色值的颜色条(summer,也许?)

标签: python matplotlib scatter-plot


【解决方案1】:
import matplotlib.pyplot as plt
import numpy as np
np.random.seed(42)

# prepare random data
stats = -1, 1, 200
x = np.random.uniform(*stats)
y = np.random.uniform(*stats)
z = np.random.uniform(*stats)

# mask unwanted data
thresh = 0.4
mask = np.abs(z) <= thresh
x_ma = np.ma.masked_where(mask, x)
y_ma = np.ma.masked_where(mask, y)
z_ma = np.ma.masked_where(mask, z)

然后进行绘图:

fig, (ax_left, ax_right) = plt.subplots(1, 2, figsize=(10, 4),
                                        sharex=True, sharey=True)
img_left = ax_left.scatter(x, y, c=z)
fig.colorbar(img_left, ax=ax_left)
img_right = ax_right.scatter(x_ma, y_ma, c=z_ma)
fig.colorbar(img_right, ax=ax_right)

给出以下结果:

右侧的图隐藏了所有低于所选阈值的点。

【讨论】:

  • 根据掩码值的含义,这让我很困扰,因为颜色条似乎暗示 可能 [-0.4, 0.4] 中有值,但 aren '不。我将编辑颜色图,使颜色条在该范围内也是白色的。 (或者也许被屏蔽的值真的是非数据。)
猜你喜欢
  • 2021-12-26
  • 1970-01-01
  • 2014-09-10
  • 2011-08-29
  • 2021-04-15
  • 2013-02-05
  • 2011-07-26
  • 2021-07-28
相关资源
最近更新 更多