gpt4 book ai didi

dataframe - 如何根据数据集中某列的值制作散点图?

转载 作者:行者123 更新时间:2023-12-03 16:21:23 45 4
gpt4 key购买 nike

我得到了一个看起来像这样的数据集

data

我正在尝试将第一列上所有带有 1 的点与带有 0 的点分开,但我想将它们放在同一个图表中。

我知道最终的结果应该类似于这个
enter image description here

但我找不到过滤 Julia 中的点的方法。我正在为我的项目使用 LinearAlgebra、CSV、Plots、DataFrames,到目前为止,我还没有找到一种方法来使 DataFrames 存储类型与 Plots 函数很好地配合使用。我一直遇到像 Cannot convert Float64 to series data for plotting 这样的错误当我尝试使用 for 循环作为过滤器单独绘制点时,如下面的代码所示

filter = select(data, :1)
newData = select(data, 2:3)

#graph one initial point to create the plot
plot(newData[1,1], newData[1,2], seriestype = :scatter, title = "My Scatter Plot")

#add the additional points with the 1 in front
for i in 2:size(newData)
if filter[i] == 1
plot!(newData[i, 1], newData[i, 2], seriestype = :scatter, title = "My Scatter Plot")
end
end


其他方法给了我其他错误,但我没有记录这些错误。

我正在使用 Julia 1.4.0 和提到的所有软件包的最新版本。

快速编辑:

知道我正在尝试复制本文的非线性降维部分可能会有所帮助 https://sebastianraschka.com/Articles/2014_kernel_pca.html#principal-component-analysis

最佳答案

使用 Plots.jl 您可以执行以下操作(我正在传递完全可重现的代码):

julia> df = DataFrame(c=rand(Bool, 100), x = 2 .* rand(100) .- 1);

julia> df.y = ifelse.(df.c, 1, -1) .* df.x .^ 2;

julia> plot(df.x, df.y, color=ifelse.(df.c, "blue", "red"), seriestype=:scatter, legend=nothing)

但是,在这种情况下,我会另外使用 StatsPlots.jl,因为您可以只写:
julia> using StatsPlots

julia> @df df plot(:x, :y, group=:c, seriestype=:scatter, legend=nothing)

如果您想按组手动操作,最简单的方法是使用 groupby功能:
julia> gdf = groupby(df, :c);

julia> summary(gdf) # check that we have 2 groups in data
"GroupedDataFrame with 2 groups based on key: c"

julia> plot(gdf[1].x, gdf[1].y, seriestype=:scatter, legend=nothing)

julia> plot!(gdf[2].x, gdf[2].y, seriestype=:scatter)

请注意 gdf变量绑定(bind)到 GroupedDataFrame在这种情况下,您可以从中获取由分组列 ( :c) 定义的组的对象。

关于dataframe - 如何根据数据集中某列的值制作散点图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61651115/

45 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com