matplotlib 散点图颜色条
- 2025-02-28 08:23:00
- admin 原创
- 74
问题描述:
我正在处理的数据有 3 个绘图参数:x、y、c。如何为散点图创建自定义颜色值?
扩展这个例子我正在尝试做:
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
解决方案 1:
来自有关散点图1 的matplotlib 文档:
仅当 c 是浮点数组时才使用 cmap
因此,colorlist 需要是浮点数列表,而不是像现在这样是元组列表。plt.colorbar() 需要一个可映射的对象,例如 plt.scatter() 返回的 CircleCollection。vmin 和 vmax 可以控制颜色条的限值。vmin/vmax 之外的内容将获取端点的颜色。
这对你有什么作用?
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()
解决方案 2:
以下是添加颜色条的OOP 方式:
fig, ax = plt.subplots()
im = ax.scatter(x, y, c=c)
fig.colorbar(im, ax=ax)
解决方案 3:
如果您希望通过两个变量进行分散并通过第三个变量进行着色,那么Altair是一个不错的选择。
创建数据集
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'])
牵牛星图
from altair import *
Chart(df).mark_circle().encode(x='A',y='B', color='C').configure_cell(width=200, height=150)
阴谋
相关推荐
热门文章
项目管理软件有哪些?
热门标签
曾咪二维码
扫码咨询,免费领取项目管理大礼包!
云禅道AD