我制作点图时遇到问题。我有一个数据框" 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)
我不知道如何根据他们的生物和链值来区分它们。
答案 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])
或使用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()
#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)