2

我有一个散点图,其中的点根据第三个变量着色。我想对我的颜色图使用对称对数刻度,如 api 中所述:SymLogNorm

不幸的是,我收到以下错误:

TypeError:数组无法安全地转换为所需的类型

这里有一个小例子。我正在使用 matplotlib 1.3.0。

# loading modules
import matplotlib as mpl
import matplotlib.pyplot as plt

# defining variables
x=[0,1,2,3]
y=[0,1,2,3]
c=[-1000,-100,100,1000]

# making scatterplot

plt.scatter(x, y, c=c, norm=mpl.colors.SymLogNorm(linthresh=10))

如果没有对称对数颜色图,该图可以正常工作。

plt.scatter(x, y, c=c)

看这里

非常感谢您的帮助。

4

1 回答 1

2

的文档SymLogNorm不是特别清楚,因此我不相信我在这个答案中所说的一切都是正确的。似乎 vminandvmax参数应该用于确定您考虑的数据范围,例如:

# loading modules
import matplotlib as mpl
import matplotlib.pyplot as plt

# defining variables
x=[0,1,2,3]
y=[0,1,2,3]
c=[-1000,-100,100,1000]

# making scatterplot
plt.scatter(x, y, c=c, s=100, norm=mpl.colors.SymLogNorm(linthresh=10, vmin=-1e3, vmax=1e3))
plt.colorbar(ticks=c)

在此处输入图像描述

然后颜色条刻度不会知道它是对数缩放的,但我认为这是您的目标效果。

于 2013-10-08T12:41:00.243 回答