python - 在 Matplotlib 中指定密度图的颜色范围
问题描述
以下代码:
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import gaussian_kde
# Generate fake data
x = np.random.normal(size=1000)
y = x * 3 + np.random.normal(size=1000)
# Calculate the point density
xy = np.vstack([x,y])
z = gaussian_kde(xy)(xy)
# Sort the points by density, so that the densest points are plotted last
idx = z.argsort()
x, y, z = x[idx], y[idx], z[idx]
fig, ax = plt.subplots()
ax.scatter(x, y, c=z, s=50, edgecolor='')
plt.show()
生成如下图:
如何将主题从红色更改为蓝色?像这样的东西:
import seaborn as sns
sns.palplot(sns.color_palette("Blues"))
解决方案
scatter
您可以按如下方式分配任何颜色图进行绘图。在这里,您将找到所有现有的颜色图matplotlib
。
您想要的颜色图名为Blues
. 您必须导入matplotlib.cm
才能访问颜色图,然后将所需的颜色图作为参数传递cmap
给散点图中。此外,您可以显示颜色条以解释颜色。如果要反转颜色图,只需_r
在该颜色图的末尾包含即可。例如,Blues_r
将反转地图,比例现在从蓝色(低)变为白色(高)。
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import gaussian_kde
import matplotlib.cm as cm
# Generate fake data
x = np.random.normal(size=1000)
y = x * 3 + np.random.normal(size=1000)
# Calculate the point density
xy = np.vstack([x,y])
z = gaussian_kde(xy)(xy)
# Sort the points by density, so that the densest points are plotted last
idx = z.argsort()
x, y, z = x[idx], y[idx], z[idx]
fig, ax = plt.subplots()
ax_ = ax.scatter(x, y, c=z, cmap=cm.Blues, s=50, edgecolor='')
plt.colorbar(ax_)
推荐阅读
- solr - 在 Solr 中定义查询参数的执行顺序
- vba - 如何使用 VBA 检查表标签中的元素
- c++ - 不要在 cmake 中链接 *.c 和 *.cpp 文件
- java - JavaFX ToolBar 调整为儿童动态宽度
- android - 允许用户设置您的设备并与 Google Home 应用关联
- spring - 如何告诉 Spring Security 我的服务类自动具有“ROLE_ADMIN”并且可以访问安全方法?
- ios - 从 Google 登录后如何导航回登录视图控制器
- javascript - Javascript函数循环变量
- python - 带有 tls 的 Python paho 客户端因 OSError 而失败
- for-loop - XSLT 基于重复值的元素首次出现