python-3.x - 使用 Python 在 Seaborn 中设置散点图中点的大小
问题描述
我正在尝试根据代表其标签的列的值设置点的大小,但我得到一个空图。
此外,我想知道如何统一设置点的大小(即不管第三列的值如何)。
对于一个可重现的例子:
plot_data.to_json()
'{"x1":{"0":-0.2019455769,"1":0.1350610218,"2":-0.1128417956,"3":-0.1481016799,"4":0.1293273221,"5":-0.0266437776,"6":0.0100572041,"7":0.0037355635,"8":-0.0203400136,"9":0.1363267107},"x2":{"0":-0.1938001473,"1":-0.1353617432,"2":-0.0381057072,"3":-0.0874488661,"4":-0.2152329772,"5":0.0275324833,"6":-0.174604808,"7":-0.1872132566,"8":0.1172552524,"9":0.0166454137},"label":{"0":1,"1":0,"2":1,"3":0,"4":0,"5":1,"6":0,"7":0,"8":1,"9":0}}'
plt.figure(figsize = (20, 10))
sns.scatterplot(x ='x1', y='x2', hue = 'label', size = 'label', sizes = {0:1, 1:3} , data = plot_data)
plt.axis('equal')
plt.show()
解决方案
您的代码非常接近:尺寸太小,无法轻松看到这些点。这里的代码带有sizes=(40, 40)
,它使最小和最大尺寸相同(请参阅docs)并给出统一的点尺寸:
import pandas as pd, seaborn as sns, matplotlib.pyplot as plt
plot_data = pd.read_json('{"x1":{"0":-0.2019455769,"1":0.1350610218,"2":-0.1128417956,"3":-0.1481016799,"4":0.1293273221,"5":-0.0266437776,"6":0.0100572041,"7":0.0037355635,"8":-0.0203400136,"9":0.1363267107},"x2":{"0":-0.1938001473,"1":-0.1353617432,"2":-0.0381057072,"3":-0.0874488661,"4":-0.2152329772,"5":0.0275324833,"6":-0.174604808,"7":-0.1872132566,"8":0.1172552524,"9":0.0166454137},"label":{"0":1,"1":0,"2":1,"3":0,"4":0,"5":1,"6":0,"7":0,"8":1,"9":0}}')
plt.figure(figsize = (10, 5))
sns.scatterplot(x='x1', y='x2', hue='label', size='label', sizes=(40, 40),
data=plot_data)
plt.axis('equal')
plt.show()
推荐阅读
- ruby - 使用 :on 在 ruby 中进行多次验证
- asp.net-mvc - MVC ReportViewer 不加载大量报告
- angular - 如何在 ag-grid 中实现多行拖动(角度)
- tensorflow - 没有onnx,如何手动将pytorch模型转成tensorflow模型?
- sql-server - SQL Server:从一个表中获取所有数据,但条件是第二个表列
- rcpp - Rcpp 中“as”的内存问题
- sap-cloud-sdk - 将 OData 结果传输到销售订单模拟实体时,销售订单模拟实体中缺少导航值 to_ScheduleLine
- ag-grid - AG Grid - 使用键而不是值对列进行排序
- weblogic - 注册。与多个 OU 名称的 Active Directory 集成 :: OBIEE 和 Weblogic
- javascript - 如何在页面上提交新项目?(jQuery)