如何使用相同的时间变量绘制三个变量? geom_point

时间:2017-05-05 19:42:09

标签: r ggplot2

我一直在寻找一段时间来尝试自己解决我的问题,但没有遇到任何似乎与我的数据一起使用的东西。我有这个数据框:

ggplot(mydata2, aes(Analysis_min, runtime))+geom_point(aes(color = factor(Sample_type)))

我想使用ggplot2创建一个绘图,它将使用相同的Analysis_min变量显示运行时和Minutes_to_100,可能是抖动的。

这是仅使用Analysis_min vs runtime:

的情节
ggplot(mydata2, aes(Analysis_min, Minutes_to_100))+geom_point(aes(color = factor(Sample_type)))

enter image description here

以下是Analysis_min与Minutes_to_100:

的情节
ACTIVITY_DESCRIPTION

enter image description here

我没有看到如何在一个图中组合这两个变量。我想我想要的是一个绘图,其中X轴为Analysis_min,Y轴为运行时,绘图中包含Minutes_to_100的点。

2 个答案:

答案 0 :(得分:2)

另一种选择是将您的数据gather转换为一个新对象,该对象包含可以采用Minutes_to_100runtime的列。然后,您可以colour使用此变量,shape使用Sample_type

#libraries
    library(tidyr)
    library(dplyr)

#gather data
df <- mydata2 %>%
  gather(var, val, -Sample, -Sample_type, -Sample_type, -Analysis_min, )

> head(df)
                                  Sample Sample_type Analysis_min            var      val
1           12212016 Female 1D 5 Minutes          1D            5 Minutes_to_100       NA
2          10242016 Female 2D 10 minutes          2D           10 Minutes_to_100 9.116667
3 10242016 Female 2D 100 Refs 10 minutes          2D           10 Minutes_to_100 9.100000
4 10242016 Female 2D 500 Refs 10 minutes          2D           10 Minutes_to_100 9.100000
5          11012016 Female 2D 10 minutes          2D           10 Minutes_to_100 8.866667
6 11012016 Female 2D 100 Refs 10 minutes          2D           10 Minutes_to_100 8.866667   


ggplot(data = df, 
       aes(x = Analysis_min, y = val, 
           colour = var, shape = Sample_type)) + 
  geom_point()

enter image description here

如您所知,jitter可能会有所帮助。

ggplot(data = df, 
       aes(x = Analysis_min, y = val, 
           colour = var, shape = Sample_type)) + 
  geom_point(position = position_jitter())

enter image description here

答案 1 :(得分:1)

您可以将Minutes_to_100的值映射为颜色,然后对sample_type使用形状美学。

ggplot(mydata2, 
       aes(x = Analysis_min, 
           y = runtime, 
           colour = Minutes_to_100, 
           shape = factor(Sample_type))) + 
  geom_point() 

或者你可以通过Sample_type来表达:

   ggplot(mydata2, 
       aes(x = Analysis_min, 
           y = runtime, 
           colour = Minutes_to_100)) + 
   geom_point() +
   facet_wrap(~Sample_type)