尝试使用 for 循环在子图中制作散点图

Posted

技术标签:

【中文标题】尝试使用 for 循环在子图中制作散点图【英文标题】:Trying to make scatter plots in subplots using for-loops 【发布时间】:2020-09-25 04:59:45 【问题描述】:

我正在尝试使用 for 循环制作子图以遍历数据框中的 x 变量。所有图都是散点图。

X-variable: 'Protein', 'Fat', 'Sodium', 'Fiber', 'Carbo', 'Sugars' 
y-variable: 'Cal'

这就是我卡住的地方

plt.subplot(2, 3, 2)
for i in range(3):
     plt.scatter(i,sub['Cal'])

【问题讨论】:

您能否提供一个数据框示例,以了解其结构? 我已将前 10 行添加到问题中,谢谢! 【参考方案1】:

使用此代码:

import matplotlib.pyplot as plt
import pandas as pd

df = pd.read_csv('data.csv')
columns = list(df.columns)
columns.remove('Cal')

fig, ax = plt.subplots(1, len(columns), figsize = (20, 5))

for idx, col in enumerate(columns, 0):
    ax[idx].plot(df['Cal'], df[col], 'o')
    ax[idx].set_xlabel('Cal')
    ax[idx].set_title(col)

plt.show()

我得到这个散点图的子图:

但是,使用单个散点图并使用标记颜色来区分数据类型也许是更好的选择。请参阅此代码:

import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
sns.set_style('darkgrid')

df = pd.read_csv('data.csv')
# df.drop(columns = ['Sodium'], inplace = True)  # <--- removes 'Sodium' column
table = df.melt('Cal', var_name = 'Type')

fig, ax = plt.subplots(1, 1, figsize = (10, 10))
sns.scatterplot(data = table,
                x = 'Cal',
                y = 'value',
                hue = 'Type',
                s = 200,
                alpha = 0.5)

plt.show()

给出这个所有数据都在一起的图:

到目前为止,'Sodium' 的值与其他值不同,因此,如果使用此行删除此列:

df.drop(columns = ['Sodium'], inplace = True)

你会得到一个更易读的情节:

【讨论】:

以上是关于尝试使用 for 循环在子图中制作散点图的主要内容,如果未能解决你的问题,请参考以下文章

r 散点图散点图R.

100天精通Python(可视化篇)——第82天:matplotlib绘制不同种类炫酷散点图参数说明+代码实战(二维散点图三维散点图散点图矩阵)

R数据可视化初阶-散点图散点图矩阵相关系数

R语言可视化:散点图散点图和折线图(line charts)3D散点图旋转3D散点图气泡图corrgram包可视化相关性矩阵马赛克图( Mosaic plots)hexbin密度图

尝试创建一个散点图,其中循环标记和颜色,以便在标记的 1 个循环完成后更改颜色

可视化实验十:利用Python绘制棒图散点图