Python Matplotlib散点图/颜色作为第三个变量/对称对数色度标度的函数

Python Matplotlib散点图/颜色作为第三个变量/对称对数色度标度的函数,python,matplotlib,Python,Matplotlib,我有一个散点图,根据第三个变量对点进行着色。我想为我的颜色贴图使用对称对数比例,如api中所述: 不幸的是,我得到了以下错误: 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,

我有一个散点图,根据第三个变量对点进行着色。我想为我的颜色贴图使用对称对数比例,如api中所述:

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

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)


非常感谢您的帮助。

关于
SymLogNorm
的文档不是特别清楚,因此我不相信我在回答中所说的一切都是正确的。似乎<<代码> vmin < /> >和<>代码> vmax < /c>参数应该被用来确定您考虑的数据范围。
# 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)


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

您使用的matplotlib版本是什么?你的“坏”例子对我来说适用于1.3.0。我使用的是1.3.0。所以我不明白为什么它不起作用。你试过上面的例子吗?非常感谢你的帮助!实际上,使SymLogNorm工作需要参数
vmin
vmax
。它应该写在文档的某个地方。