我在制作带有对数刻度值的散点图时遇到问题。我拥有的阵列是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())
答案 0 :(得分:1)
x
,y
和c
必须与按位置映射的大小相同(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坐标。这就是为什么它们的长度必须相同。
在这种情况下,也许散点图不是你所追求的?