python - 在 matplotlib 中创建一个没有可映射的颜色条
问题描述
要打电话plt.colorbar
,我需要一个“可映射的”,我通常由plt.imshow
or创建plt.contour
。没有这些,是否有一种“合理”的方式来创建可映射的?
更具体地说,我的代码如下:
import matplotlib.pyplot as plt
from matplotlib.cm import viridis
colors = viridis(np.linspace(0,1,10))
for i, col in enumerate(colors):
plt.plot(i, 'o', color = col)
然后我想打电话plt.colorbar
,但我没有可映射的。我通常的工作是cmap = plt.scatter(np.linspace(0,1), np.full(50, np.nan), c = np.linspace(0,1))
,它工作得很好,但我觉得非常难看。
解决方案
在这种情况下,您scatter
不仅可以使用生成可映射对象,还可以一次完成所有工作(绘制点,并返回相应的可映射对象)。
编辑
一般来说,Matplotlib 总是提供一种创建对象集合的方法(例如参见LineCollection 使用示例),允许绘制具有不同属性(如颜色、线宽等)的线条(或任何其他对象)集合。
import matplotlib.pyplot as plt
import numpy as np
colors = np.linspace(0,1,10)
mappable = plt.scatter(np.zeros(10), colors, s=30, c=colors, cmap='viridis')
plt.colorbar(mappable)
plt.show()
产生以下图像
推荐阅读
- python - python 3中具有多个输入的函数
- swiftui - SwiftUI 不使用 UIViewRepresentable 和 ObservableObject 刷新我的自定义 UIView
- c# - 如何仅在 Tesseract C# 中捕获数字
- ti-basic - 试图显示矩阵编辑器的位置
- linkedin - LinkedIn 访问基本资料
- java - 如果增加迭代次数,顺序流比并行流快
- json - 我需要使用 powershell 从 Json 文件中获取特定值
- php - 使用 zend_call_function() 时的段错误
- java - 二维数组作为类变量
- java - 计算方差/标准差 - JAVA