如何将+ geom_line()与分类x变量和定量y变量一起使用

时间:2020-03-05 01:35:56

标签: r ggplot2

如何使用ggplot 2创建线图,其中x变量是分类变量或因数,y变量是数字变量,而组变量是分类变量?我已经尝试过使用上述变量对+ geom_point()进行操作,但可以使用,但是+ geom_line()不能。

我已经查看过以下帖子: Creating line graph using categorical dataggplot2 bar plot with two categorical variablesNo line in plot chart despite + geom_line(),但没有一个回答我的问题。

在我进入代码和示例之前,(1)是的,我绝对必须将x变量和组变量作为字符或因子,(2)否,我不希望使用条形图或仅想要geom_point()。

以下示例提供了三个独立示例变量的系数,这些变量来自因变量不同而导致的三个不同示例回归。尽管下面的代码显示了我发现的解决方法(例如,创建一个名为“ test”的int变量来代替包含回归的自变量名称的chr变量),但我需要能够保留自变量的chr名称。

这就是我所拥有的:

library(dplyr)
library(ggplot2)
library(plotly)
library(tidyr)

var_names <- c("ST1", "ST2", "ST3", 
               "EFI1", "EFI2", "EFI3", "EFI4", 
               "EFI5", "EFI6")

####Dataset1####
reg <- c(26441.84, 20516.03, 12936.79, 17793.22, 18837.48, 15704.31, 17611.14, 17360.59, 14836.34)
r_adj <- c(30473.17, 35221.43, 29875.98, 30267.31, 29765.9, 30322.86, 31535.66, 30955.29, 29828.3)
a_adj <- c(19588.63, 31163.79, 22498.53, 27713.72, 25703.89, 28565.34, 29853.22, 29088.25, 25213.02)

df1 <- data.frame(var_names, reg, r_adj, a_adj, stringsAsFactors = FALSE)
df1$test <- c(1:9)

df2 <- gather(df1, key = "series_type", value = "value", c(2:4))

fig7 <- ggplot(df2, aes(x = test, y = value, color = series_type)) + geom_line() + geom_point()
fig7

最终,我想要的东西看起来像下面的图,但是用独立变量名代替了'test'变量。

Example Plot

1 个答案:

答案 0 :(得分:2)

您可以将var_names转换为一个因子并按外观顺序设置级别(否则它将按字母数字顺序分配,并且x轴将不规则)。然后只需将series_type添加到图中的组参数中即可。

df2 <- gather(df1, key = "series_type", value = "value", c(2:4)) %>%
  mutate(var_names = factor(var_names, levels = unique(var_names)))

ggplot(df2, aes(x = var_names, y = value, color = series_type, group = series_type)) + geom_line() + geom_point()

enter image description here