【问题标题】:How can I replicate a seaborn countplot without a pandas dataframe?如何在没有 pandas 数据框的情况下复制 seaborn 计数图?
【发布时间】:2021-12-24 23:14:06
【问题描述】:

我想做一个seaborn countplot()。我没有数据框,但我知道我想绘制什么。

我想绘制类似这样的图表

我可以在哪里更改计数/类/数据值。

我知道我需要一个数据框,但我没有任何数据。

我真的只需要一种手动绘制图表的方法。

我尝试过这样的事情,但我没有数据框,所以它不起作用:

data= sns.load_dataset("data")
ax = sns.countplot(x="class", data=data)

我怎样才能做到这一点,以便我可以手动绘制数据?假设我想像图片中那样从 0 到 3000,底部有 5 个 Heartbeat 类。

有什么方法可以手动完成吗?也许用数据做一个列表并输入它?-

【问题讨论】:

    标签: python pandas seaborn


    【解决方案1】:

    要创建没有任何数据的 seaborn 图:

    您可以使用已在seaborn 中定义的数据集,例如flight_data

    查看包含所有示例数据集的 this GitHub 存储库。

    在这个例子中,我将使用flights_data

    1. 首先,使用flights_data = sns.load_dataset("flights") 加载数据集
    2. 接下来,使用 flights_data.head()
    3. 接下来,您可以使用数据创建不同样式的图表。

    例如,如果你想创建一个散点图,你可以使用这个语法:

    sns.scatterplot(data=flights_data, x="year", y="passengers")

    这将是你的结果:

    您可以通过多种不同的方式绘制 seaborn 数据。

    查看您提供的图表,您需要使用seaborn.countplot()

    您的代码将如下所示,其中数据存储在列表中并且是可变的。

    import seaborn as sns
    
    ax = sns.barplot(x=['Normal', 'R on T', 'PVC', 'SP', 'UB'], y=[2800, 1700, 200, 90, 30])
    ax.set_ylabel('Count')
    

    要设置样式,请添加:

    %config InlineBackend.figure_format='retina'
    
    sns.set(style='whitegrid', palette='muted', font_scale=1.2)
    
    graphcolorpallet = ["#01BEFE", "#FFDD00", "#FF7D00", "#FF006D", "#ADFF02", "#8F00FF"]
    
    sns.set_palette(sns.color_palette(graphcolorpallet))
    
    rcParams['figure.figsize'] = 12, 8
    

    结果应该是这样的。

    您可以在此处了解有关使用seaborn 创建图表的更多信息。

    【讨论】:

      【解决方案2】:

      Seaborn 无需使用数据框即可完美运行。您可以将值提供为列表或 numpy 数组。将来还将支持组织类似于数据框的字典。使用数据框的一个主要好处是 seaborn 可以使用列名自动为轴和图例放置标签(以防使用 hue)。

      如果你没有明确的数据,但你有计数,你可以创建一个条形图。

      import seaborn as sns
      
      ax = sns.barplot(x=['Normal', 'R on T', 'PVC', 'SP', 'UB'], y=[2800, 1700, 200, 90, 30])
      ax.set_ylabel('Count')
      

      或者您可以使用模拟数据创建countplot

      import seaborn as sns
      
      values = ['Normal'] * 2800 + ['R on T'] * 1700 + ['PVC'] * 200 + ['SP'] * 90 + ['UB'] * 30
      sns.countplot(x=values)
      

      【讨论】:

      • 谢谢,代码有效,但没有设置 x、y 轴标签@JohanC​​pan>
      • sns.countplot 将 y 标签设置为“count”。如果您还想设置 x-label,您可以执行 ax = sns.countplot(...) 然后 ax.set_xlabel('new x-label')。如果刻度值本身提供了足够的信息,您可以删除 x-label 将其设置为空字符串:ax.set_xlabel('')
      • 代码没有回答我的问题。我想在没有数据的情况下绘制它。
      • 您还可以即时创建数据框:sns.countplot(data=pd.DataFrame({'Heartbeat Classes': values}), x='Heartbeat Classes'),它将同时设置 x-label (Heartbeat Classe) 和 y-label (count)。跨度>
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-20
      • 2019-06-26
      • 2021-02-15
      • 2017-03-27
      • 1970-01-01
      • 1970-01-01
      • 2021-02-16
      相关资源
      最近更新 更多