【问题标题】:sns stripplot with just top n number of categories仅包含前 n 个类别的 sns stripplot
【发布时间】:2018-12-10 12:44:05
【问题描述】:

我的代码可以很好地绘制 sns stripplot:

f, ax = plt.subplots(figsize=(15,12))
sns.stripplot(data = cars, x='price', y='model', jitter=.5)
plt.show()

但是汽车模型太多了,所以我希望只可视化数据集中出现频率最高的 n 个汽车模型。 还有没有任何 lambda 计算或类似的东西可以应用于pricemodel 而无需创建单独的数据框?

如果有更好的可视化库可以提供帮助,请随时提出。

【问题讨论】:

    标签: python python-3.x data-visualization seaborn


    【解决方案1】:

    您可以使用value_counts() 查找列中出现次数最多的值。在这里,我选择了前 2 个最常见的模型:

    most_occurring_values = cars['model'].value_counts().head(2).index
    

    然后您可以过滤原始数据框并仅选择包含频率最高的模型的行:

    cars_subset = cars[cars['model'].isin(most_occurring_values)]
    

    最后,使用该子集绘制数据:

    f, ax = plt.subplots(figsize=(15,12))
    sns.stripplot(data = cars_subset, x='price', y='model', jitter=.5)
    plt.show()
    

    【讨论】:

    • 我知道我可以这样做,但我在想是否有可以传递给 sns 的方法来过滤数据帧并对其进行处理而无需创建单独的数据帧。
    【解决方案2】:

    根据official documentation

    order, hue_order : 字符串列表,可选。为了绘制分类级别,否则级别是从数据中推断出来的 对象。

    要选择前 3 个模型,您可以:

    sns.stripplot(data = cars, x='price', y='model', jitter=.5, order=cars.model.value_counts().iloc[:3].index)
    

    【讨论】:

      猜你喜欢
      • 2016-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-06
      相关资源
      最近更新 更多