我有一个散点图,其中的点根据第三个变量着色。我想按照 api 中的描述为我的颜色图使用对称对数刻度:SymLogNorm
不幸的是,我收到以下错误:
TypeError: array cannot be safely cast to required type
这是一个小例子。我正在使用 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)
see here
非常感谢您的帮助。
SymLogNorm
的文档不是特别清楚,因此我不确定我在这个答案中所说的一切都是正确的。似乎应该使用 vmin
和 vmax
参数来确定您考虑的数据范围,例如:
# 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)
然后颜色条刻度将不知道它是对数缩放的,但我认为这就是您想要的效果。
我是一名优秀的程序员,十分优秀!