【问题标题】:Creating plots in R with 3 variables在 R 中创建带有 3 个变量的图
【发布时间】:2013-10-12 20:38:30
【问题描述】:

我一直在遵循Little Book of R 中的分析步骤。这是一个很棒的教程,但是为了让事情正常工作,它和许多其他教程需要以某种方式组织数据。

我的数据结构是这样的(一个非常小的样本)a:

Phylum Confidence Time Seq_ID Environment Dataset
Acidobacteria 0.801 5 >3134898 Marine 4440037.3
Bacteroidetes 0.812 6 >3066473 Marine 4440037.3
Acidobacteria 0.828 5 >3085551 Gut 4440038.3
Firmicutes    0.830 4 >3087676 Coral 4440036.3

我想要一个好方法

a) 按细菌门为每​​个环境绘制时间。我意识到这意味着我需要为每个门创建一个图。 (见plots

b.按两个不同门的环境绘制时间,然后我将按环境对它们进行颜色编码。 (见plots

我知道我可以根据环境和细菌创建一个新的数据框,但我无法将它正确地合并到使用第三个变量(时间)的图中。

new_df = myDF[(myDF$Environment=='Marine') & (myDF$Phylum=='Acidobacteria'),]

我已经尝试了几件事...

p <- ggplot(myDF, aes(Environment, Time))
p + geom_boxplot(aes(fill = Environment))

它创建了一个图,但这没有考虑门(例如,我希望每个门都有一个单独的图)。

或者这个……

 for (i in environment) #this is a list I created
 {
     for (j in phyla) #this is a list I created
     {
        #stats_df = myDF[(myDF$Environment==i) & (myDF$Phylum==j),]
        plot(myDF[[j]], myDF[[i]], xlab=NULL, ylab='Time')
      }
 }

这个有错误

Warning in min(x) : no non-missing arguments to min; returning Inf
Warning in max(x) : no non-missing arguments to max; returning -Inf
Warning in min(x) : no non-missing arguments to min; returning Inf
Warning in max(x) : no non-missing arguments to max; returning -Inf
Error in plot.window(...) : need finite 'xlim' values
Calls: plot -> plot.default -> localWindow -> plot.window
Execution halted

shell returned 1

但即使它确实绘制了,它仍然没有考虑 Time 变量。我真正想弄清楚的是如何在情节中使用三个变量。

【问题讨论】:

标签: r plot ggplot2 dataframe


【解决方案1】:

假设门是一个因子变量

library(ggplot2)
g<- ggplot(myDF, aes(Environment, Time))
g + geom_point() + facet_grid(. ~ phylum)

 library(ggplot2)

 g<- ggplot(df1, aes(Environment, Time))
 g + geom_point() + facet_grid(phylum ~ .)

详情请见here

【讨论】:

  • 谢谢你,这让我更接近了。我正在处理约 40 个不同的门和 20 个环境。这种方法将制作一个紧凑的情节。我会继续阅读,但无论如何谢谢你。
  • 如果它符合您的要求,您能接受这个作为答案吗?
  • 您的回复 - 虽然有帮助(谢谢)并没有完全符合我的要求(请参阅情节链接)。我仍在与其他方法搏斗。如果最后你的回复符合我的需要(稍加修改),我会跑到那个大对勾,然后把它拍在桌子上,就像它是多米诺骨牌一样。
  • 我的回答是基于您在问题中提出的样本数据,您在该问题中询问“我希望每个门都有一个单独的图”。我不确定您真正想要的真实数据是什么。所以,我帮不了你。 :)
  • 很公平。你的回应是对精神的回应,而不是对文字的回应。但是,我一直在编辑我的问题,因此删除了很多具体内容。那你怎么知道这封信是什么?!我会给你打勾,我会继续努力让这样的事情发挥作用...... matplot(myDF[(myDF$Environment=="Acidobacteria") & (myDF$Phylum=="Marine"),], myDF$Time, type="p", xlab=NULL, ylab="test")。谢谢@Metrics。
猜你喜欢
  • 2022-08-20
  • 2018-12-27
  • 2021-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-19
  • 1970-01-01
  • 2021-06-02
相关资源
最近更新 更多