I’m trying to show a color bar of my scatter plot but I’m keep getting the
error:
TypeError: You must first set_array for mappable
This is what I’m doing to plot:
# Just plotting the values of data that are nonzero
x_data = numpy.nonzero(data)[0] # x coordinates
y_data = numpy.nonzero(data)[1] # y coordinates
# Mapping the values to RGBA colors
data = plt.cm.jet(data[x_data, y_data])
pts = plt.scatter(x_data, y_data, marker='s', color=data)
plt.colorbar(pts)
If I comment the line plt.colorbar(pts)
I got the plot correctly, but I
would like to plot the color bar too.
Thank you in advance.
You’re passing in specific rgb values, so matplotlib can’t construct a
colormap, because it doesn’t know how it relates to your original data.
Instead of mapping the values to RGB colors, let scatter
handle that for
you.
Instead of:
# Mapping the values to RGBA colors
data = plt.cm.jet(data[x_data, y_data])
pts = plt.scatter(x_data, y_data, marker='s', color=data)
Do:
pts = plt.scatter(x_data, y_data, marker='s', c=data[x_data, y_data])
(Just pass in to c
what you were originally passing into plt.cm.jet
.)
Then you’ll be able to construct a colormap normally. The specific error is
telling you that the colors have been manually set, rather than set through
set_array
(which handles mapping an array of data values to RGB).
问题内容: 我是matplotlib的新用户,我的平台是Ubuntu 10.04 Python 2.6.5 这是我的代码 错误是: 我安装了“防颗粒几何”库,但是它不起作用。 我尝试使用后端的其他参数,例如“ GTK”和“ TkAgg”。 我安装了软件包,但错误仍在下面。 谁能告诉我一个可执行的后端参数及其依赖库? 这是错误: 问题答案: 您当前选择的后端“ agg”不支持show()。 后端用于
问题内容: 我正在尝试使用OpenCV从摄像机实时绘制一些数据。但是,实时绘图(使用matplotlib)似乎不起作用。 我将问题隔离到以下简单示例中: 我希望该示例可以单独绘制1000点。实际发生的情况是,窗口弹出并显示第一个点(表示正确),然后等待循环结束,然后填充图的其余部分。 有什么想法为什么我一次看不到点呢? 问题答案: 这是有问题的代码的工作版本(至少需要从2011-11-14起版本)
问题内容: 我在这里重新绘制图形时遇到问题。我允许用户在时间刻度(x轴)中指定单位,然后重新计算并调用此函数plots()。我希望该图仅进行更新,而不是将另一个图附加到该图上。 问题答案: 你基本上有两个选择: 精确执行当前操作,但在重新配置数据之前先致电和。这是最慢但最简单,最可靠的选择。 除了重新绘制外,你还可以更新绘图对象的数据。你需要在代码中进行一些更改,但这比每次重新绘制都快得多。但是,
问题内容: 我有以下代码: 因此,这将使用指定的颜色图在X轴和Y轴上生成值的图形。和轴是完美的,但是颜色图在的最小值和最大值之间分布。我想强制颜色图的范围在0到1之间。 我想到使用: 设置轴的范围,但这仅接受X和Y的最小值和最大值的参数,而不是颜色图。 编辑: 为了清楚起见,假设我有一个图的值的范围为(0 … 0.3),而另一个图的值的范围为(0.2 … 0.8)。 在两个图中,我都希望颜色条的范
问题内容: 我有一个3元组的列表,表示3D空间中的一组点。我想绘制一个覆盖所有这些点的表面。mplot3d软件包中的plot_surface函数需要X,Y和Z作为二维数组作为参数。plot_surface是绘制表面的正确函数,如何将数据转换为所需格式? 问题答案: 对于曲面,它与三元组列表略有不同,您应该为2d数组中的域传递网格。 如果您只拥有3d点列表而不是某些函数f(x, y) -> z,那么
问题内容: 在Python解释器中执行以下指令后,将获得一个带有绘图的窗口: 不幸的是,当程序进行进一步的计算时,我不知道如何继续以交互方式探索创建的图形。 有可能吗?有时计算很长,如果可以在检查中间结果时进行计算,则将有所帮助。 问题答案: 使用不会阻塞的呼叫: 使用: 使用交互模式:
问题内容: 我陷入一种感觉应该相对容易的事情上。我在下面提供的代码是基于我正在从事的一个较大项目的示例。我没有理由发布所有详细信息,因此请原样接受我带来的数据结构。 基本上,我正在创建一个条形图,我可以弄清楚如何在条形图上(在条形图的中心或上方)添加值标签。一直在网上查看示例,但在我自己的代码上实现未成功。我相信解决方案是使用“文本”或“注释”,但是我:a)不知道要使用哪个(通常来说,还没有弄清楚
问题内容: 综观matplotlib文档,似乎标准的方式来添加一个是使用: 我希望能够独立于图形创建类似对象,因此可以在不同图形中使用它们。就像是 这有可能吗?如果可以,我该怎么做? 更新:我没有设法使轴和图形的创建脱钩,但是以下答案中的示例可以轻松地在新实例或实例中重用先前创建的轴。这可以用一个简单的函数说明: 问题答案: 通常,你只需将轴实例传递给函数。 例如: 要回答你的问题,你始终可以执行