Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.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 如何在散点图matplotlib中缩小图例元素的比例?_Python_Numpy_Matplotlib - Fatal编程技术网

Python 如何在散点图matplotlib中缩小图例元素的比例?

Python 如何在散点图matplotlib中缩小图例元素的比例?,python,numpy,matplotlib,Python,Numpy,Matplotlib,让我们假设我有这个散点图,并希望保持图中点的大小,但在图例中,我希望将大小表示为1,2,。。。而不是50100 视情况而定。如果要显示的数字是任意的,即与实际大小无关,则可以提供一个数字列表作为标签 import numpy as np import matplotlib.pyplot as plt N = 50 x = np.random.rand(N) y = np.random.rand(N) a2 = 300*np.random.rand(N) sc = plt.scatter(x,

让我们假设我有这个散点图,并希望保持图中点的大小,但在图例中,我希望将大小表示为1,2,。。。而不是50100


视情况而定。如果要显示的数字是任意的,即与实际大小无关,则可以提供一个数字列表作为标签

import numpy as np
import matplotlib.pyplot as plt

N = 50
x = np.random.rand(N)
y = np.random.rand(N)
a2 = 300*np.random.rand(N)

sc = plt.scatter(x, y, s=a2, alpha=0.5)
plt.legend(sc.legend_elements("sizes", num=6)[0], [1,2,3,4,5])
plt.show()
但是,如果要显示的数字与某些数据之间存在关系

import numpy as np
import matplotlib.pyplot as plt

N = 50
x = np.random.rand(N)
y = np.random.rand(N)
a3 = np.random.randint(1,6, size=N)

f = lambda a: 12*a**2       # function to calculate size from data
g = lambda s: np.sqrt(s/12) # inverse function to calc. data from size

sc = plt.scatter(x, y, s=f(a3), alpha=0.5)
plt.legend(*sc.legend_elements("sizes", num=5, func=g))
plt.show()

将a2除以50?如果散点图中的点不仅大小不同,而且颜色也不同,并且大小和颜色之间的关系是线性的(例如,大小为2的点的暗度是大小为1的点的暗度的两倍),我们能否在您建议的图例中显示色差?
import numpy as np
import matplotlib.pyplot as plt

N = 50
x = np.random.rand(N)
y = np.random.rand(N)
a3 = np.random.randint(1,6, size=N)

f = lambda a: 12*a**2       # function to calculate size from data
g = lambda s: np.sqrt(s/12) # inverse function to calc. data from size

sc = plt.scatter(x, y, s=f(a3), alpha=0.5)
plt.legend(*sc.legend_elements("sizes", num=5, func=g))
plt.show()