python scatter ndarray尺寸大小错误和rgb颜色问题

时间:2014-02-10 17:17:05

标签: python numpy matplotlib scatter

我在制作带有对数刻度值的散点图时遇到问题。我拥有的阵列是numpy ndarray的。 x.size = 19,y.size = 18,数据为19x18。它告诉我“ValueError:x和y必须是相同的大小”。但他们不应该是?!我尝试捣乱它,只是让每一个18,但然后它没有将我的数据值转换为0-1范围,它给了我一个rbg颜色错误。 任何帮助将不胜感激!

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.cm import get_cmap
from matplotlib.colors import (LogNorm, Normalize,SymLogNorm)
from matplotlib.ticker import (LogLocator, LogFormatter, LogFormatterMathtext, 
                           MultipleLocator)
x= np.arange(19)
y = np.arange(18)
data = np.random.random_sample((19, 18))

sc =ax2.scatter(x,y,c=data,norm=LogNorm(),
                cmap=get_cmap('Spectral_r'),edgecolors='none')
cbar1 = fig.colorbar(sc,ax=ax2,ticks=LogLocator(),format=LogFormatterMathtext())

2 个答案:

答案 0 :(得分:1)

xyc必须与按位置映射的大小相同(zip(x, y, c)应返回您想要的位置和颜色元组)。

尝试类似

的内容
X, Y = np.meshgrid(x, y)   # makes 2D X, Y arrays for every grid point

sc = plt.scatter(X.ravel(), Y.ravel(), c=c.ravel(), ...)

答案 1 :(得分:1)

http://en.wikipedia.org/wiki/Scatter_plot

  

数据显示为。的集合   每个点具有确定位置的一个变量的值   在横轴上和另一个变量的值确定   垂直轴上的位置。

制作散点图时,您没有绘制两个单独的数组。您正在绘制N二维点。在您使用的功能中,分别提供x和y坐标。这就是为什么它们的长度必须相同。

在这种情况下,也许散点图不是你所追求的?