【问题标题】:Plot a 4 column data as dot plot in R在 R 中将 4 列数据绘制为点图
【发布时间】:2016-12-08 21:54:35
【问题描述】:

我在 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

我想用下面的方式来绘制它

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

编辑

我从矩阵中取出前 10 行和dput()

> 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 的可能性。这很有帮助。谢谢。

【问题讨论】:

  • 是否要为每一行数据创建一个点图?
  • 如果我们可以为每一行创建,那就太好了。最多有 60 行。
  • 感谢您不使用条形图。

标签: r plot


【解决方案1】:
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,这将作为“长”数据框更好地工作:

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() 您的数据将有助于我们说明如何做到这一点(如果需要)。

【讨论】:

  • 非常感谢。这真的很棒。在了解了 ggplot2 的可能性之后,我想改变绘图的外观。请检查原始线程。我添加了更多信息dput()
猜你喜欢
  • 1970-01-01
  • 2021-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-05
  • 1970-01-01
相关资源
最近更新 更多