我有一个包含两列的数据框 一个是 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
我该怎么做?
要在绘图中添加颜色条,您可以使用 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”。