Python 如何按比例排列matplotlib散点
我有2个输入(x,y)和3个输入类,我用不同的颜色标记它们。通过缩放,我可以看到特定类在特定(x,y)点被发现的次数 要在图表上显示点,我使用以下代码:Python 如何按比例排列matplotlib散点,python,matplotlib,scatter-plot,Python,Matplotlib,Scatter Plot,我有2个输入(x,y)和3个输入类,我用不同的颜色标记它们。通过缩放,我可以看到特定类在特定(x,y)点被发现的次数 要在图表上显示点,我使用以下代码: ax.scatter(first_column, second_column, c=outputs_colors, s=labels_mean, alpha=0.3) first_column - x_values; second_column - y_values; c=outputs_colors - colors for diff
ax.scatter(first_column, second_column, c=outputs_colors, s=labels_mean, alpha=0.3)
first_column - x_values;
second_column - y_values;
c=outputs_colors - colors for different classes;
s=labels_mean - class share at a given point
当x、y输入为各种浮点数时,图表具有信息性:
但是当x,y是整数,并且类中存在许多重叠时,图表就不清晰了:
是否可以在不使用循环和单独的plot.scatter的情况下,按大小从背景的大到前景的小排列散点?要得到这样的东西:
我想您只需要对数据进行排序,以便首先绘制更大的标记。我不知道如何存储数据,所以这里有一种面向数据的方法:
x = [1.5, 1.5, 1.5, 1.5, 1.5, 2.6, 2.6, 2.6, 2.6, 2.6]
y = np.array([1.5, 3.0, 7.4, 20., 20., 1.5, 3.0, 7.4, 20., 20.])
s = np.array([100, 100, 100, 50, 100, 100, 100, 100, 50, 100])
c = np.array(['k', 'k', 'k', 'r', 'k', 'k', 'k', 'k', 'r', 'k'])
如果你把它画成
from matplotlib import pyplot as plt
fig, ax = plt.subplots()
ax.scatter(x, y, s=s, c=c)
你会遇到你的问题,因为黑色标记覆盖了较小的红色标记。据我所知,matplotlib中没有解决此问题的功能,因此您必须首先按s
以相反顺序对点进行排序
import numpy as np
idx_sort = np.argsort(s)[::-1]
x, y, s, c = map(lambda vv: np.take(vv, idx_sort), [x, y, s, c])
当人们没有可利用的数据时,他们很难帮助你。你只要给他们一些变量和一个要解决的问题