在底部绘制较大的点,在顶部绘制较小的点

2023-12-23

我正在寻找一种方法来生产scatter情节在python将绘制较小的图above较大的以提高图形的“可读性”(图像有类似的词吗?)

这是一个简单的 MWE:

import numpy as np
import matplotlib.pyplot as plt


def random_data(N):
    # Generate some random data.
    return np.random.uniform(70., 250., N)

# Data lists.
N = 1000
x = random_data(N)
y = random_data(N)
z1 = random_data(N)
z2 = random_data(N)

cm = plt.cm.get_cmap('RdYlBu')
plt.scatter(x, y, s=z1, c=z2, cmap=cm)
plt.colorbar()

plt.show()

其产生:

我希望最后绘制较小的点,这样它们就不会隐藏在较大的点后面。我怎么能这样做呢?


Apply sort绘图之前

order = np.argsort(-z1) # for desc
x = np.take(x, order)
y = np.take(y, order)
z1 = np.take(z1, order)
z2 = np.take(z2, order)

该图使用alpha更具可读性。

import numpy as np
import matplotlib.pyplot as plt


def random_data(N):
    # Generate some random data.
    return np.random.uniform(70., 250., N)

# Data lists.
N = 1000
x = random_data(N)
y = random_data(N)
z1 = random_data(N)
z2 = random_data(N)

order = np.argsort(-z1)
x = np.take(x, order)
y = np.take(y, order)
z1 = np.take(z1, order)
z2 = np.take(z2, order)

cm = plt.cm.get_cmap('RdYlBu')
plt.scatter(x, y, s=z1, c=z2, cmap=cm, alpha=0.7) # alpha can be 0 ~ 1
plt.colorbar()

plt.show()

输出是

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在底部绘制较大的点,在顶部绘制较小的点 的相关文章