Ron*_*oni 5 r ggplot2 dataframe
我正在尝试使用 ggplot 在 R 中重新创建 P\xc3\xb3lya urn 模型(https://en.wikipedia.org/wiki/P\xc3\xb3lya_urn_model)。该模型基本上从“瓮”中的 1 个白色球和 1 个黑色球开始,然后随机选择一个球并将其与相同颜色的球放回一起。我在 R 中执行此操作,假设进行 10 次迭代(因此 10 次取出一个球并将其与另一个相同颜色的球放回一起)。我运行这个说 5 次。因此,我得到一个 5 列(=每次运行)和 10 行(=迭代)的数据框。
\n\n我想要说明的是这一点,但这张图片显然有更多的试验和迭代。
\n\n到目前为止,我拥有的是一个数据框,其中每列都是每次试验/运行中瓮中白球的分数,我想说明每次迭代的比例如何变化。我想为每次运行单独显示这一点,所以每次运行我都希望有不同的颜色。
\n\n我浏览了无数类似的问题,但没有找到答案。我认为这是因为我的数据框现在有 5 列,但是当我重新调整它的形状时,我只得到一列比例,并且在每一列旁边我得到一个代码,说明它属于哪一列 - 但在这种情况下仅 ggplot用 4 种颜色绘制一条线。
\n\nmy data frame looks like this:\n V1 V2 V3 V4 id\n1 0.3333333 0.33333333 0.33333333 0.3333333 1\n2 0.5000000 0.25000000 0.25000000 0.2500000 2\n3 0.4000000 0.20000000 0.20000000 0.4000000 3\n4 0.3333333 0.16666667 0.16666667 0.3333333 4\n5 0.2857143 0.14285714 0.14285714 0.2857143 5\n6 0.2500000 0.12500000 0.12500000 0.3750000 6\n7 0.2222222 0.11111111 0.11111111 0.3333333 7\n8 0.2000000 0.10000000 0.10000000 0.3000000 8\n9 0.1818182 0.09090909 0.09090909 0.2727273 9\n10 0.2500000 0.08333333 0.08333333 0.2500000 10\n
Run Code Online (Sandbox Code Playgroud)\n\n但为了让它更容易,这里有一些测试代码:
\n\nV1 <- rnorm(10, 0.5, 0.1)\nV2 <- rnorm(10, 0.5, 0.1)\nV3 <- rnorm(10, 0.5, 0.1)\nV4 <- rnorm(10, 0.5, 0.1)\ndf <- data.frame(V1, V2, V3, V4)\n
Run Code Online (Sandbox Code Playgroud)\n\n我的 ggplot 代码如下:
\n\nlibrary(reshape2)\ndf$id = row.names(df) # add id to each row \ndf_long = melt(df, id.vars = "id") # reshape the data into long format\n
Run Code Online (Sandbox Code Playgroud)\n\n第一个版本仅描述了要点
\n\nggplot(df_long, aes(x = value, y = id, color = variable)) + \ngeom_point() \n
Run Code Online (Sandbox Code Playgroud)\n\n这个版本不知怎的让线条“混乱”,我不明白为什么。
\n\nggplot() + geom_line(data = df_long, aes(x = value, y = id, color = variable, group = variable)) + xlab("x axis") + ylab("y axis")\n
Run Code Online (Sandbox Code Playgroud)\n\n任何帮助将不胜感激,我已经为此苦苦挣扎了好几天,到目前为止还无法取得任何重大突破。
\n\n编辑:“搞砸了”我的意思是,数据点似乎丢失了它们所属的试验/运行,而不是每次运行绘制一条线(我想要得到的)。因此,我不是每次运行/试验都得到一条线,而是得到更多的线,其中一些线仅连接 2-3 个点,并且通常连接来自不同运行的点。我希望我的解释足够清楚。
\n如果我正确理解你的话,这似乎正确地连接了所有这些。请检查这是否正确。
df$id = 1:nrow(df)
final_data <- melt(df, id='id')
names(final_data) <- c('id', 'func', 'value')
ggplot() + geom_line(data = final_data, aes(x = id, y = value, color = func, group = func), size = 1)
Run Code Online (Sandbox Code Playgroud)
输出:
V1 V2 V3 V4 id
1 0.4656275 0.4846357 0.4613710 0.5885883 1
2 0.4312952 0.4929042 0.5499502 0.5133333 2
3 0.5890201 0.4652452 0.5598206 0.4789956 3
4 0.7108441 0.4143140 0.5738660 0.4073124 4
5 0.6374072 0.6671785 0.5111608 0.4475132 5
6 0.4797948 0.6191391 0.5423101 0.4472512 6
7 0.5868793 0.5601147 0.4369428 0.5696494 7
8 0.5169970 0.4398982 0.5137524 0.3923140 8
9 0.3960616 0.3552303 0.4174657 0.4449402 9
10 0.5222120 0.5028562 0.5760920 0.4310323 10
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3902 次 |
最近记录: |