首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于散射的matplotlib颜色条

用于散射的matplotlib颜色条
EN

Stack Overflow用户
提问于 2011-05-20 03:28:33
回答 3查看 181.1K关注 0票数 110

我正在处理具有3个绘图参数的数据: x,y,c。如何为散点图创建自定义颜色值?

扩展我正在尝试做的这个example

代码语言:javascript
复制
import matplotlib
import matplotlib.pyplot as plt
cm = matplotlib.cm.get_cmap('RdYlBu')
colors=[cm(1.*i/20) for i in range(20)]
xy = range(20)
plt.subplot(111)
colorlist=[colors[x/2] for x in xy] #actually some other non-linear relationship
plt.scatter(xy, xy, c=colorlist, s=35, vmin=0, vmax=20)
plt.colorbar()
plt.show()

但结果是TypeError: You must first set_array for mappable

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-20 06:22:15

来自scatter 1上的matplotlib文档

仅当c是浮点数组时才使用

cmap

因此,colorlist需要是一个浮点数列表,而不是您现在所拥有的元组列表。plt.colorbar()需要一个可映射的对象,就像plt.scatter()返回的CircleCollection。然后,vmin和vmax可以控制色条的限制。vmin/vmax之外的内容获取端点的颜色。

这对你来说是如何工作的?

代码语言:javascript
复制
import matplotlib.pyplot as plt
cm = plt.cm.get_cmap('RdYlBu')
xy = range(20)
z = xy
sc = plt.scatter(xy, xy, c=z, vmin=0, vmax=20, s=35, cmap=cm)
plt.colorbar(sc)
plt.show()

票数 223
EN

Stack Overflow用户

发布于 2019-04-10 22:08:10

下面是添加colorbar的the OOP way

代码语言:javascript
复制
fig, ax = plt.subplots()
im = ax.scatter(x, y, c=c)
fig.colorbar(im, ax=ax)
票数 29
EN

Stack Overflow用户

发布于 2017-07-06 12:08:12

如果您希望按两个变量进行分散,并按第三个变量计算颜色,Altair可能是一个很好的选择。

创建数据集

代码语言:javascript
复制
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

df = pd.DataFrame(40*np.random.randn(10, 3), columns=['A', 'B','C'])

牛郎星图

代码语言:javascript
复制
from altair import *
Chart(df).mark_circle().encode(x='A',y='B', color='C').configure_cell(width=200, height=150)

绘图

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

https://stackoverflow.com/questions/6063876

复制
相关文章

相似问题

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