在单个图形中绘制所有列值

2024-04-19 14:09:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一套葡萄酒数据。列名是葡萄酒描述符。每行代表一瓶不同的酒。如果葡萄酒的描述中有描述符(来自另一个数据集),则该列中的单元格将填充价格。否则,就是楠。你知道吗

我想创建一个图表,将描述符与价格进行比较。x轴应该是每个描述符。以上几点代表一瓶酒的价格。这里的信息显示了一个类似于我正在寻找的图形,但对我的数据不太适用。https://seaborn.pydata.org/tutorial/categorical.html

下面的代码让我非常接近我要找的:

count = 1
for col in wine_desc.columns:
    plt.scatter([count for i in range(len(wine_desc["aftertaste"]))], wine_desc[col])
    count +=1

但是,我希望x记号是葡萄酒描述标签。我也想能够做的事情,如添加标题,轴标签等,这种方法不允许。你知道吗

有没有一种方法可以用当前形式的数据来实现这一点,或者有没有一种方法可以通过转换数据来实现这一点?你知道吗

编辑:以下是我的数据子集:

wine_desc = pd.DataFrame({"aftertaste":[0, 12, 0], "alcoholic": [0, 0, 14], "aroma": [20, 12, 0]})
wine_desc.replace(0, np.nan, inplace=True)

看起来像:

   aftertaste  alcoholic  aroma
0         NaN        NaN   20.0
1        12.0        NaN   12.0
2         NaN       14.0    NaN

我希望回味、酒精和香气成为我的x标签。余味以上12分,酒精以上14分,香气以上20分,12分。我希望他们都并排在一个图表上,这样我可以很快地看到,如果一个酒单提高了价格。你知道吗


Tags: 数据方法forcount图表代表价格col
1条回答
网友
1楼 · 发布于 2024-04-19 14:09:44

我认为seaborn.stripplot做你想做的。 我不得不修改你原来的数据框。你知道吗

代码:

import pandas as pd 
import seaborn as sns

wine_desc = pd.DataFrame({"aftertaste":[0, 12, 0, 15, 12, 13, 10, 14, 12, 4],
                          "alcoholic": [14, 12, 12, 12, 13,14, 15, 12, 0, 0], 
                          "aroma": [22, 15, 18, 17, 19, 11, 1, 20, 13, 0]})
wine_desc.replace(0, np.nan, inplace=True)
df = pd.DataFrame([(colname, wine_desc[colname][i]) for i in range(len(wine_desc)) for colname in wine_desc.columns], 
                 columns=['col', 'values'])

sns.stripplot(x = 'col', y='values', data=df)

绘图

![display]1

相关问题 更多 >