如何使用ggplot

时间:2018-06-07 03:29:41

标签: r ggplot2 line-plot

我在R中有以下数据:

id <- factor(seq(1:72))
initial.e <- rnorm(n=72, mean = 21.51, sd = 6.58)
initial.f <- rnorm(n = 72, mean = 20.75, sd = 3.378)

final.e <- rnorm(n = 72, mean = 19.81, sd = 7.48)
final.f <- rnorm(n = 72, mean = 19.77, sd = 5.389)

data <- data.frame(id,initial.e, initial.f, final.e, final.f)

我需要为ef创建一个包含两条直线趋势线的散点图,但我对如何创建它感到很遗憾。我找到了这篇文章:https://sakaluk.wordpress.com/2015/08/27/6-make-it-pretty-plotting-2-way-interactions-with-ggplot2/我尝试过,但没有按照我想要的方式工作。

我还尝试使用melt包中的reshape2,但我无法获得图表以显示我想要的方式 - e和{{两条趋势线散点图中的1}}。

f

事情发生后,事情发生了变化。我尝试的所有代码都有一些带有datamelt <- melt(data, id = 'id') datamelt <- datamelt %>% mutate(names = ifelse(datamelt$variable %in% c('initial.e', 'initial.f'), 'Before', 'After')) datamelt <- datamelt %>% mutate(types = ifelse(datamelt$variable %in% c('final.e', 'final.f'), 'e', 'f')) 的基本散点图或者只是一些通用错误。

修改

图表应包含散点图,其中包含带有趋势线的geom_smooth()intial.e之间的关系,以及initial.ffinal.e之间的另一种关系,同一绘图中有趋势线。

2 个答案:

答案 0 :(得分:1)

这样的事情怎么样?

data %>%
    gather(k, value, -id) %>%
    mutate(
        state = gsub("(\\.e$|\\.f$)", "", k),
        what = gsub("(initial\\.|final\\.)", "", k)) %>%
    ggplot(aes(id, value, colour = what)) +
    geom_line() +
    facet_wrap(~ state)

enter image description here

或点数

data %>%
    gather(k, value, -id) %>%
    mutate(
        state = gsub("(\\.e$|\\.f$)", "", k),
        what = gsub("(initial\\.|final\\.)", "", k)) %>%
    ggplot(aes(id, value, colour = what)) +
    geom_line() +
    geom_point() + 
    facet_wrap(~ state)

enter image description here

更新

data %>%
    gather(k, value, -id) %>%
    mutate(
        state = gsub("(\\.e$|\\.f$)", "", k),
        what = gsub("(initial\\.|final\\.)", "", k)) %>%
    select(-k) %>%
    spread(state, value) %>%
    ggplot(aes(x = initial, y = final, colour = what, fill = what)) +
    geom_smooth(fullrange = T, method = "lm") +
    geom_point()

enter image description here

我们正在显示基于简单线性回归lm的趋势线,包括置信带(在se = F内禁用geom_smooth)。您还可以在method = loess内显示geom_smooth的LOESS趋势。有关详细信息,请参阅?geom_smooth

答案 1 :(得分:1)

我认为您正在寻找的是这样的:我没有测试过代码,但它应该给你一个想法

ClipOval ( child: new BackdropFilter(
  filter: ImageFilter.blur(sigmaX: 5.0, sigmaY: 5.0),
  child: new Container(
    decoration: new BoxDecoration(shape: BoxShape.circle, color: Colors.lightBlue.withOpacity(0.5)),
    child: Text("Something")
    )
  ))