Matplotlib 具有可变标记大小的散点图(seaborn)

Matplotlib 具有可变标记大小的散点图(seaborn),matplotlib,visualization,data-visualization,seaborn,Matplotlib,Visualization,Data Visualization,Seaborn,我正在使用seabornpairplot绘制数据点不同维度的散点图。但是,我希望数据点的标记具有与数据点的维度之一对应的大小。我有以下代码: markersize = 1000* my_dataframe['dim_size'] / sum(my_dataframe['dim_size']) sns.set_context("notebook", font_scale=1.5, rc={'figure.figsize': [11, 8]}) sns.set_style("darkgrid",

我正在使用seaborn
pairplot
绘制数据点不同维度的散点图。但是,我希望数据点的标记具有与数据点的维度之一对应的大小。我有以下代码:

markersize = 1000* my_dataframe['dim_size'] / sum(my_dataframe['dim_size'])

sns.set_context("notebook", font_scale=1.5, rc={'figure.figsize': [11, 8]})
sns.set_style("darkgrid", {"axes.facecolor": ".9"})

kws = dict(s=markersize, linewidth=.5, edgecolor="w")

sbax = sns.pairplot(my_dataframe, hue='dim_hue' x_vars=['dim_1', 'dim_2'], y_vars=['dim_3', 'dim_4'], size=5, plot_kws=kws)

axes = sbax.axes
for a in axes.flatten():
    a.set_ylim([0,1])
    a.set_xlim([0,1])
如果我打印(kws),我会在字典中看到大小都不同,从40到2000不等。但是,绘图上的标记都是相同的。有什么方法可以实现我想要的吗

顺便说一句,如果我设置参数
scatter\u kws={“s”:markersize}
,这对
lmplot
非常有效

谢谢

import seaborn as sns
import matplotlib.pyplot as plt
iris = sns.load_dataset("iris")

size = 100 * (iris.petal_length / iris.petal_length.max())
g = sns.PairGrid(iris, vars=["sepal_length", "sepal_width"], size=5)
g.map(plt.scatter, s=size)

非常感谢。这只解决了我问题的一半,因为如果我将
hue='species'
设置到
PairGrid
初始化中,它就不起作用了。我怎样才能同时拥有色调和不同的标记呢?事实上,如果我仔细观察,标记大小是有差别的,但差别很小,几乎看不到。为什么会发生这种情况?使用
size=100*(iris.petal\u length-iris.petal\u length.min())/(iris.petal\u length.max()-iris.petal\u length.min())应该可以看到更好的大小差异。