在R中绘制4列数据作为点图

时间:2016-12-08 11:40:01

标签: r plot

我在R中有一个矩阵,如下面的

             H520KOR1 H520KOR2 H5202GyPHR1 H5202GyPHR2
ILMN_1702609 5.916239 6.068699    4.910235    4.983025
ILMN_1762631 5.490704 5.454779    4.573977    4.628981
ILMN_2193175 5.730220 5.726268    6.222486    6.273563
ILMN_3310451 4.955594 5.007212    4.423170    4.333526

我想以下列方式绘制

please check plot here

我在powerpoint中画了这张照片。我尝试了几种方法,但我遗漏了一些东西。任何帮助将不胜感激。

修改

我从矩阵和dput()

中取得了前10行
> dput(dat)
structure(c(5.91623892229345, 5.49070424526676, 5.73021963287428, 
4.9555939015656, 7.34200299329158, 4.49057379554289, 5.17555122512255, 
5.6535332613054, 4.96143970172796, 4.4791600551366, 6.06869857120224, 
5.45477925441301, 5.72626774546258, 5.00721151456707, 7.33658261931523, 
4.36058760303988, 5.13085555870237, 5.77523892720755, 4.96844107374241, 
4.41926414134707, 4.91023457951491, 4.57397741940793, 6.22248596066649, 
4.42317017555403, 7.95776070495557, 5.13499805485839, 4.39694778946656, 
4.80648887200906, 4.44717629932841, 5.25723605338541, 4.98302491117088, 
4.62898140897605, 6.27356272326665, 4.33352596469113, 7.9391551372836, 
5.13491596111887, 4.48130179704286, 4.90950199548828, 4.43674075246716, 
5.13877204607323), .Dim = c(10L, 4L), .Dimnames = list(c("ILMN_1702609", 
"ILMN_1762631", "ILMN_2193175", "ILMN_3310451", "ILMN_1808219", 
"ILMN_1703280", "ILMN_1705466", "ILMN_2135232", "ILMN_1839994", 
"ILMN_3234823"), c("H520KOR1", "H520KOR2", "H5202GyPHR1", "H5202GyPHR2"
)))

是否也可以将两个重复的数据绘制成一行,给定一个data.frame,如下所示

H520KOR1 control
H520KOR2 control
H5202GyPHR1 treated
H5202GyPHR2 treated

这会将绘图更改为跟随(不是为每行生成单独的绘图,我觉得将所有行的信息包含在一个绘图中会更好,这将进一步简化解释)。我只是在学习ggplot2的可能性。这有助于实现目标。谢谢。

enter image description here

1 个答案:

答案 0 :(得分:0)

library(tidyverse)

read.table(text="expression  H520KOR1 H520KOR2 H5202GyPHR1 H5202GyPHR2
ILMN_1702609 5.916239 6.068699    4.910235    4.983025
ILMN_1762631 5.490704 5.454779    4.573977    4.628981
ILMN_2193175 5.730220 5.726268    6.222486    6.273563
ILMN_3310451 4.955594 5.007212    4.423170    4.333526",
           stringsAsFactors=FALSE, header=TRUE) -> df

对于ggplot2,这将更好地作为" long"数据框:

df <- gather(df, category, value, -expression)

你可以将它们全部绘制在一个上(尽管有60个,颜色真的不会起作用):

ggplot(df, aes(x=category, y=value, color=expression)) +
  geom_point(size=3)  +
  scale_color_discrete(name=NULL) +
  theme(legend.position="top")

你可以将它们面对面(再次,如果你真的有60个,我会删除颜色):

ggplot(df, aes(x=category, y=value, color=expression)) +
  geom_point(size=3) +
  facet_wrap(~expression) +
  theme(legend.position="none")

我们不知道您有什么样式或标签要求,因此这是有限信息中最好的。

如果你真的有一个矩阵与一个数据框,那么你需要先转换它并确保行名称成为一个列。 dput()您的数据有助于我们说明如何执行此操作(如果需要)。