簡體   English   中英

用於散點圖的 matplotlib 顏色條

[英]matplotlib colorbar for scatter

我正在處理具有 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

來自 scatter 1上的 matplotlib 文檔:

cmap 僅在 c 是浮點數組時使用

所以 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()

圖像示例

這是添加顏色條的 OOP 方式

fig, ax = plt.subplots()
im = ax.scatter(x, y, c=c)
fig.colorbar(im, ax=ax)

如果您希望通過兩個變量分散並通過第三個變量分散顏色, 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)

陰謀

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM