Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.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图例与seaborn气泡图大小不匹配_Python_Matplotlib_Seaborn - Fatal编程技术网

Python Matplotlib图例与seaborn气泡图大小不匹配

Python Matplotlib图例与seaborn气泡图大小不匹配,python,matplotlib,seaborn,Python,Matplotlib,Seaborn,我使用seaborn创建了一个气泡图,并使用matplotlib在seaborn图的右侧绘制了图例。我使用size=(1900)指定了seaborn代码中气泡的大小,但matplotlib图例上的缩放并不反映绘图显示的内容。图例的读数范围为0到45,但我的图中的实际数据范围为0到900 fig,(ax1,ax2,ax3)=plt.子批次(1,3,figsize=(11,4)) sns.散点图(y=“Min”,x=“Max”, size=“Count”,size=(1900),alpha=0.5,

我使用seaborn创建了一个气泡图,并使用matplotlib在seaborn图的右侧绘制了图例。我使用
size=(1900)
指定了seaborn代码中气泡的大小,但matplotlib图例上的缩放并不反映绘图显示的内容。图例的读数范围为0到45,但我的图中的实际数据范围为0到900

fig,(ax1,ax2,ax3)=plt.子批次(1,3,figsize=(11,4))
sns.散点图(y=“Min”,x=“Max”,
size=“Count”,size=(1900),alpha=0.5,
color='r',data=code1,ax=ax1,legend=False)
sns.散点图(y=“Min”,x=“Max”,α=0.5,
color='b',size='Count',size=(1900),
数据=code2,ax=ax2,图例=False)
sns.散点图(y=“Min”,x=“Max”,α=0.5,
color='g',size='Count',size=(1900),
数据=代码3,ax=ax3)
ax3.图例(loc='右上角',bbox_至_锚定=(1.7,1),标签间距=2,
fontsize=14,frameon=False,MarkersScale=1)
这是我的阴谋


我无法弄清楚seaborn是如何构造图例输出以供matplotlib摄取的。我确实了解到我的数据(代码1、代码2和代码3)具有不同的最小值和最大值,这应该在seaborn的sizes参数下指定。对于代码1,大小=(1900);对于代码2,大小=(1300);对于代码3,大小=(1,45)。因为我使用matplotlib在code3绘图的右侧绘制图例,所以缩放特定于最右侧的绘图,而不是所有3个绘图。最后,我使用了matplotlib的legend_元素,如下所示:

fig, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(12,4))
scatter = ax1.scatter(y=code1["Min"], x=code1["Max"],
                s=code1["Count"], 
                color='r', alpha=0.5)
ax2.scatter(y=code2["Min"], x=code2["Max"], 
                     color='b', s=code2["Count"], alpha=0.5)
ax3.scatter(y=code3["Min"], x=code3["Max"], 
                     color='g', s=code3["Count"], alpha=0.5)

kw = dict(prop="sizes", num=[10,100,500,900])
legend = ax3.legend(*scatter.legend_elements(**kw), title="Count", fontsize=12,
                    loc='upper right', bbox_to_anchor=(1.5,1), labelspacing=2,
                   frameon=False)

气泡的大小以点为单位,介于1到900之间。数据由
“计数”
列中的数据确定。因此,该列中的最大值似乎在45左右,因此该值将显示在图例中。sizes=(1900)是根据“Count”列中的数据选择的。计数中的最小值为1,最大值约为900,这是不可复制的。请参阅Quick try:当您使用大小=(1100)时会发生什么?