首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Matplotlib Python散点图

Matplotlib Python散点图
EN

Stack Overflow用户
提问于 2013-07-26 04:21:50
回答 2查看 20K关注 0票数 0

我想绘制一个维度为50*50的数据集。每个数据都与一个“概率”相关联,这是一个介于0和1之间的数字。我想用颜色灰度来表示它们的概率。我知道如何使用matplotlib工具绘制这些点。但是,我应该如何将它们与适当的颜色关联起来呢?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2013-07-26 05:22:50

您需要使用色彩映射表将特定的颜色与每个点相关联。例如,考虑下面这段代码

代码语言:javascript
运行
复制
 import numpy as np
 from mpl_toolkits.mplot3d import Axes3D
 import matplotlib.pyplot as plt
 import random as ran

 fig = plt.figure()
 ax = fig.add_subplot(111, projection='3d')

 cmhot = plt.cm.get_cmap("hot")
 xs =  [ran.random()*50 for n in range(0,50)]
 ys = [ran.random()*50 for n in range(0,50)]
 zs = [ran.random() for n in range(0,50)]
 l = ax.scatter(xs, ys, zs, c=zs, cmap=cmhot)
 fig.colorbar(l)
 plt.show()

这将导致以下结果:

在这种情况下,通过使用默认的“热”颜色映射将颜色与z值相关联。

票数 8
EN

Stack Overflow用户

发布于 2013-07-26 05:02:38

像这样的东西?关键点是c=z,它告诉scatter根据cmap的标量值将z指定的色彩映射应用到每个点。

代码语言:javascript
运行
复制
import numpy
import matplotlib.pyplot as plt
x=numpy.random.randint(0,100,size=25)
y=numpy.random.randint(0,100,size=25)
z=numpy.random.rand(25)
plt.scatter(x, y, c=z, s=100, cmap=plt.cm.cool, edgecolors='None', alpha=0.75)
plt.colorbar()
plt.show()

您还可以提供一个颜色列表作为c参数。例如

代码语言:javascript
运行
复制
colors=[(1,0,1,el) for el in z]
plt.scatter(x, y, c=colors, s=100, edgecolors='None')

在这种情况下,每个点都有一个与之关联的RGB元组,并且scatter使用您指定的颜色。有了上面给出的两条线,每个点的Alpha值就会根据概率z而变化。仅使用scatteralpha关键字无法实现这一点

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17868024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档