Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在底部绘制较大的点,在顶部绘制较小的点_Python_Matplotlib - Fatal编程技术网

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

Python 在底部绘制较大的点,在顶部绘制较小的点,python,matplotlib,Python,Matplotlib,我正在寻找一种在python中生成scatter绘图的方法,其中较小的绘图将绘制在较大的绘图之上,以提高图形的“可读性”(图像是否有类似的单词?) 以下是一个简单的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.

我正在寻找一种在
python
中生成
scatter
绘图的方法,其中较小的绘图将绘制在较大的绘图之上,以提高图形的“可读性”(图像是否有类似的单词?)

以下是一个简单的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()
产生:


我希望较小的点最后绘制,这样它们就不会隐藏在较大的点后面。如何执行此操作?

打印前应用
排序

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()
输出是