Dotplot有两个分类变量和两个定量变量

时间:2016-05-03 14:16:52

标签: r plot

我制作点图时遇到问题。我有一个数据框" distribution_tab"有4列6行。两个第一列是定量变量,另外两个是分类值:

     read.length     percentage.GC   strand     organism

1         203           63.0        forward     bacteria
2         250           33.0        forward     plant
3         205           72.0        reverse     bacteria
4         240           36.0        reverse     plant
5         210           33.5        forward     plant
6         230           63.5        reverse     bacteria 

我想从这个数据帧中只制作一个点图,x轴为read.length,y轴为percent.GC。钢绞线"前进"必须用点表示,并且链用三角形反转(或者用其他两个不同的符号)。有机体"细菌"必须以粉红色和有机体"植物"在绿色。

因此,例如,如果一个数据是"转发和细菌",它必须在点图中用粉红点表示,如果它是"反向和植物"它必须是一个绿色三角形。

我真的不知道该怎么做(或者如果可能的话)。目前我已经制作了一个带有两个定量变量的点图:

    plot(distribution_tab$read_length ~ distribution_tab$percentage.GC)

我不知道如何根据他们的生物和链值来区分它们。

2 个答案:

答案 0 :(得分:3)

distribution_tab <- read.table(header = TRUE, text = "read.length     percentage.GC   strand     organism
1         203           63.0        forward     bacteria
2         250           33.0        forward     plant
3         205           72.0        reverse     bacteria
4         240           36.0        reverse     plant
5         210           33.5        forward     plant
6         230           63.5        reverse     bacteria ")


plot(percentage.GC ~ read.length, data = distribution_tab,
     pch = c(17,19)[(strand %in% 'forward') + 1L],
     col = c('pink', 'green')[(organism %in% 'plant') + 1L])

enter image description here

或使用ifelse,但上述方法更灵活

plot(percentage.GC ~ read.length, data = distribution_tab,
     pch = ifelse(strand %in% 'forward', 19, 17),
     col = ifelse(organism %in% 'plant', 'green', 'pink'))

答案 1 :(得分:2)

使用ggplot:

library(ggplot2)

df$col <- ifelse(df$organism == "bacteria", "pink", "green")
ggplot(df, aes(read.length, percentage.GC, shape = strand, col = col)) + 
  geom_point(size = 4) +
  scale_color_identity()

enter image description here 数据:

#dummy data
df <- read.table(text="     read.length     percentage.GC   strand     organism
                 1         203           63.0        forward     bacteria
                 2         250           33.0        forward     plant
                 3         205           72.0        reverse     bacteria
                 4         240           36.0        reverse     plant
                 5         210           33.5        forward     plant
                 6         230           63.5        reverse     bacteria ", header = TRUE)