我有一个数字数据集。 其中有3个自变量和1个因变量。
ex:变量名是a,b,c和d。 d是因变量。
在我的数据集中d = f(a,b,c)。 我想在y轴上绘制->变量d,在x轴上绘制所有其他变量。最好是线图。
请告知。
谢谢
答案 0 :(得分:1)
样本数据集将大大提高您在此处获得成功的机会。有关将来如何提出更好的问题,请参见How to make a great R reproducible example。
也就是说,这是一个简单的例子,可以帮助您到达目的地。首先,数据。复制此文本并将其保存为工作目录“ test.csv”。请注意,工作目录必须是默认目录,或者是您从中启动R脚本的目录,或者是您用{{1}设置的目录。 }命令。
setwd
现在有一些代码可以实现:
a,b,c,d
10,8,5,1
8,3,6,2
7,4,4,3
6,6,5,4
5,4,6,5
7,7,4,6
您可以做很多事情来使其漂亮,但这至少说明了我认为您正在尝试实现的目标。神奇之处在于library("reshape2")
library("ggplot2")
df <- read.csv("test.csv")
df2 <- melt(df, id.vars = "d")
ggplot(df2, aes(d, value, col = variable, group = variable))+
geom_line()
将数据分成可绘制的列(请查看df2),然后在ggplot中定义多个序列。
这是您的结果应为:
答案 1 :(得分:1)
如果我对您的理解正确,那么有几种方法可以解决您的问题。
第一个是您尝试将每个自变量编码为图形参数:
library(tidyverse)
tibble(a = rnorm(50),
b = rnorm(50),
c = rnorm(50),
d = rnorm(50)) %>%
ggplot(aes(y = d, x = a, size = b, color = c)) +
geom_line() +
theme_minimal()
由于该方法会导致混乱的绘图,因此第二种方法是您尝试将一些自变量分组到分位数组中,并尝试对其进行绘图。
一种可能是这样:
library(tidyverse)
tibble(a = rnorm(50),
b = rnorm(50),
c = rnorm(50),
d = rnorm(50)) %>%
mutate(c = cut(c,breaks = c(-Inf,quantile(c))),
b = cut(b,breaks = c(-Inf,quantile(b)))) %>%
ggplot(aes(y = d, x = a,color = b, group = c)) +
geom_line() +
theme_minimal()
或者,由于此命令仍然很凌乱,请使用facet_wrap
:
tibble(a = rnorm(50),
b = rnorm(50),
c = rnorm(50),
d = rnorm(50)) %>%
mutate(c = cut(c,breaks = c(-Inf,quantile(c))),
b = cut(b,breaks = c(-Inf,quantile(b)))) %>%
ggplot(aes(y = d, x = a,color = b)) +
geom_line() +
geom_point() +
facet_wrap(~c,drop = T) +
theme_minimal()
您可以尝试的最后一种方法是melt
您的数据:
library(tidyverse)
library(reshape2)
tibble(a = rnorm(50),
b = rnorm(50),
c = rnorm(50),
d = rnorm(50)) %>%
melt(id.vars = 'd') %>%
ggplot(aes(y = d, x = value,color = variable)) +
geom_line() +
theme_minimal()
或者,再整理一下,再次使用facet_wrap
:
library(tidyverse)
library(reshape2)
tibble(a = rnorm(50),
b = rnorm(50),
c = rnorm(50),
d = rnorm(50)) %>%
melt(id.vars = 'd') %>%
ggplot(aes(y = d, x = value,color = variable)) +
geom_line() +
theme_minimal() +
facet_wrap(~variable)