如何向绘图添加颜色条

问题描述 投票:0回答:1

我有一个包含两列的数据框 一个是 dif 另一个是 sza

我做了下面的散点图

x = df['sza']

y = df['dif']

# Calculate the point density

xy = np.vstack([x,y])

z = gaussian_kde(xy)(xy)

fig, ax = plt.subplots()

ax.scatter(x, y, c=z, s=100)

plt.show()

我想做的是添加一个颜色条,指示图中显示的点密度 z

我该怎么做?

python pandas matplotlib scatter-plot colorbar
1个回答
0
投票

要在绘图中添加颜色条,您可以使用 matplotlib 库中的 ScalarMappable 类。以下是如何修改代码以添加颜色条的示例:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.cm import ScalarMappable

x = df['sza']
y = df['dif']

# Calculate the point density
xy = np.vstack([x,y])
z = gaussian_kde(xy)(xy)

fig, ax = plt.subplots()

# Create a scatter plot with a colorbar
sc = ax.scatter(x, y, c=z, s=100)

# Create a ScalarMappable object to represent the colorbar
sm = ScalarMappable(cmap='viridis', norm=plt.Normalize(vmin=z.min(), vmax=z.max()))
sm.set_array([])

# Add the colorbar to the plot
cb = fig.colorbar(sm)
cb.set_label('Point Density')

plt.show()

首先,像以前一样使用 ax.scatter() 方法创建散点图。然后,我们使用 viridis 颜色图和归一化的 z 值创建一个 ScalarMappable 对象 sm。我们还将数组设置为空 [] 因为情节不需要它。

最后,使用 fig.colorbar(sm) 将颜色条添加到图中,并使用 cb.set_label() 将其标签设置为“Point Density”。

© www.soinside.com 2019 - 2024. All rights reserved.