python散点图密度颜色,如何在matplotlib中绘制以密度着色的散点图?

I'd like to make a scatter plot where each point is colored by the spatial density of nearby points.

I've come across a very similar question, which shows an example of this using R:

What's the best way to accomplish something similar in python using matplotlib?

解决方案

In addition to hist2d or hexbin as @askewchan suggested, you can use the same method that the accepted answer in the question you linked to uses.

If you want to do that:

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)

fig, ax = plt.subplots()

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

plt.show()

jvyv1.png

If you'd like the points to be plotted in order of density so that the densest points are always on top (similar to the linked example), just sort them by the z-values. I'm also going to use a smaller marker size here as it looks a bit better:

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

cr8aM.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 当您使用matplotlib绘制散点图时,可以使用参数c指定散点的颜色。下面是一个示例代码,使用Pythonmatplotlib绘制散点图并修改散点的颜色。 ```python import matplotlib.pyplot as plt # 生成数据 x = [1, 2, 3, 4, 5] y = [2, 3, 1, 5, 4] # 绘制散点图,并指定颜色 plt.scatter(x, y, c='r') # 显示图形 plt.show() ``` 在上面的代码,我们通过调用`scatter`函数绘制了一个散点图。`scatter`函数有很多可选参数,其`c`参数指定散点的颜色。在这个例子,我们将颜色设置为红色。 如果您想使用其他颜色,可以使用字符串表示法(例如'r'表示红色)或RGB元组表示法(例如(0.5, 0.2, 0.1)表示一种深棕色)。例如,要将散点的颜色更改为蓝色,您可以这样做: ```python plt.scatter(x, y, c='b') ``` 您也可以根据数据点的值来设置颜色。例如,如果您想根据y值设置颜色,可以使用以下代码: ```python plt.scatter(x, y, c=y) ``` 在这个例子,我们将c参数设置为y,这意味着颜色将根据y的值而变化。由于y的值介于1到5之间,因此散点的颜色也将在这个范围内变化。 ### 回答2: Python使用matplotlib库可以轻松绘制散点图,并且可以通过修改点的颜色来增加图像的可读性和美观度。 首先,我们需要导入matplotlib的pyplot模块,用于绘制图像。 ```python import matplotlib.pyplot as plt ``` 接下来,我们创建两个列表,分别存储散点图的横坐标和纵坐标数据。 ```python x = [1, 2, 3, 4, 5] y = [2, 4, 6, 8, 10] ``` 然后,使用scatter()函数绘制散点图。该函数的第一个参数是横坐标数据,第二个参数是纵坐标数据。 ```python plt.scatter(x, y) ``` 默认情况下,散点图上的点是蓝色的。如果我们想要修改点的颜色,可以使用c参数指定一个颜色颜色可以是一个单个的字符、一个具体的颜色名称、或者一个表示颜色的数字。 ```python plt.scatter(x, y, c='red') ``` 此外,我们还可以使用colormap参数指定一组颜色,让散点图上的点呈现渐变的色彩变化。例如,我们可以使用'cool' colormap来绘制渐变的蓝色散点图。 ```python plt.scatter(x, y, c=y, cmap='cool') ``` 最后,通过调用show()函数显示绘制好的散点图。 ```python plt.show() ``` 综上所述,以上代码示例展示了如何使用matplotlib绘制散点图,并修改点的颜色。无论是单色还是渐变色,通过修改颜色可以增加图像的可读性和美观度。 ### 回答3: 使用Pythonmatplotlib库可以很方便地绘制散点图,并且可以通过修改点的颜色来实现。下面是一个示例代码: ``` import matplotlib.pyplot as plt # 输入散点数据 x = [1, 2, 3, 4, 5] y = [2, 4, 5, 5, 7] # 绘制散点图 plt.scatter(x, y) # 修改点的颜色 colors = ['red', 'blue', 'green', 'yellow', 'purple'] # 定义点的颜色,这里使用了五种颜色 plt.scatter(x, y, c=colors) # 显示图形 plt.show() ``` 在上述代码,首先定义了散点图的数据,即x和y的值。然后使用`plt.scatter()`函数绘制散点图,并且没有指定点的颜色,因此默认使用了蓝色。接下来,定义了一个长度为5的颜色列表,每个点对应一个颜色。最后,再次使用`plt.scatter()`函数,通过设置`c`参数为颜色列表,来对散点图的点进行着色。最后,使用`plt.show()`函数显示图形。 运行上述代码,将会得到一个散点图,其每个点的颜色分别为红色、蓝色、绿色、黄色和紫色。你也可以根据需要对点的颜色进行自定义。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值