gpt4 book ai didi

r - 使用 r 中的 ggplot 将数据框的 n 列绘制为线

转载 作者:行者123 更新时间:2023-12-03 18:43:23 24 4
gpt4 key购买 nike

我正在尝试使用 ggplot 在 R 中重新创建 Pólya 瓮模型( https://en.wikipedia.org/wiki/Pólya_urn_model )。该模型基本上从“瓮”中的 1 个白球和 1 个黑球开始,随机选择一个球并将其与相同颜色的球放在一起。我在 R 中这样做是为了让我们说 10 次迭代(所以 10 次取出一个球并将它与另一个相同颜色的球放回一起)。我运行这个说 5 次。因此,我得到一个 5 列(=每次运行)和 10 行(=迭代)的数据框。

What I want is to illustrate is this但是这张照片显然有更多的试验和迭代。

到目前为止,我拥有的是一个数据框,其中每一列都是每次试验/运行时骨灰盒中白球的比例,我想说明每次迭代的比例如何变化。我想为每次运行单独显示这个,所以每次运行我都希望有不同的颜色。

我浏览了无数类似的问题,但没有找到答案。我认为这是因为我的数据框现在有 5 列,但是当我对其进行整形时,我只得到一列比例,在每一列旁边我得到一个代码,说明它属于哪一列 - 但在这种情况下,ggplot 只绘制一个4 种颜色的线。

my data frame looks like this:
V1 V2 V3 V4 id
1 0.3333333 0.33333333 0.33333333 0.3333333 1
2 0.5000000 0.25000000 0.25000000 0.2500000 2
3 0.4000000 0.20000000 0.20000000 0.4000000 3
4 0.3333333 0.16666667 0.16666667 0.3333333 4
5 0.2857143 0.14285714 0.14285714 0.2857143 5
6 0.2500000 0.12500000 0.12500000 0.3750000 6
7 0.2222222 0.11111111 0.11111111 0.3333333 7
8 0.2000000 0.10000000 0.10000000 0.3000000 8
9 0.1818182 0.09090909 0.09090909 0.2727273 9
10 0.2500000 0.08333333 0.08333333 0.2500000 10

但为了更容易,这里有一些测试代码:
V1 <- rnorm(10, 0.5, 0.1)
V2 <- rnorm(10, 0.5, 0.1)
V3 <- rnorm(10, 0.5, 0.1)
V4 <- rnorm(10, 0.5, 0.1)
df <- data.frame(V1, V2, V3, V4)

我的 ggplot 代码如下:
library(reshape2)
df$id = row.names(df) # add id to each row
df_long = melt(df, id.vars = "id") # reshape the data into long format

第一个版本只描述了要点
ggplot(df_long, aes(x = value, y = id, color = variable)) + 
geom_point()

这个版本不知何故让线条“搞砸了”,我不知道为什么。
ggplot() + geom_line(data = df_long, aes(x = value, y = id, color = variable, group = variable)) + xlab("x axis") +  ylab("y axis")

任何帮助将不胜感激,我已经为此苦苦挣扎了好几天,到目前为止还没有取得任何重大突破。

编辑:通过“搞砸”我的意思是,不是每次运行绘制一条线(我想得到),数据点似乎丢失了它们所属的试验/运行。因此,不是每次运行/试验得到一条线,我得到更多的线,其中一些只连接 2-3 个点,并且经常连接来自不同运行的点。我希望我的解释足够清楚。

最佳答案

使用您的 df你可以这样做:

library(tidyverse)

# I use 'gather' instead of 'melt'
df_long = df %>%
mutate(id = 1:nrow(.)) %>%
gather(id.vars, values, -id)

df_long %>%
ggplot(aes(x = values, y = id, group = id.vars, color = id.vars)) +
geom_line(size = 1)

![enter image description here ]

观察:

如果您 set.seed(...)我们可以复制您的 df目的。

关于r - 使用 r 中的 ggplot 将数据框的 n 列绘制为线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50410524/

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