带组的散点图
Scatter plot with groups
您好,我想绘制不同组的散点图或点图。
我可以让它适用于单个图,但因为 ggplot2 需要 x 轴的坐标。那是我已经惹上麻烦了。
这是我的结构:
# A tibble: 2 x 33
gene_id gene N1 N2 N3 N4 N5 N6 N7 T1 T2 T3 T4
<chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 ENSMUSG000… RNS 198 182 206 183 177 194 193 173 191 167 200
2 ENSMUSG000… RNS2 199 198 216 252 273 159 164 159 162 151 199
# ... with 20 more variables: T5 <dbl>, T6 <dbl>, T7 <dbl>, T8 <dbl>, T9 <dbl>,
# T10 <dbl>, T11 <dbl>, T12 <dbl>, T13 <dbl>, T14 <dbl>, M1 <dbl>, M2 <dbl>,
# M3 <dbl>, M4 <dbl>, M5 <dbl>, M6 <dbl>, M7 <dbl>, M8 <dbl>, M9 <dbl>, M10 <dbl>
我想首先绘制所有相邻的个体,并将 N、T 和 M 分组在一起,并用不同的颜色绘制它们。我很确定一旦绘图本身起作用,我就可以分配颜色。
ggplot(a, aes(y=a[,3],x=1))+
geom_point()
在这种情况下,我的起点非常低。;;;
感谢您的帮助!
您需要将列名转换为变量。我使用了您发布的数据,但我不确定您是否期望这样的情节
data <- read.csv('tabla.csv')
data
初始数据
gene_id gene N1 N2 N3 N4 N5 N6 N7 T1 T2 T3 T4
1 ENSMUSG000… RNS 198 182 206 183 177 194 193 173 191 167 200
2 ENSMUSG000… RNS2 199 198 216 252 273 159 164 159 162 151 199
融化数据
library(reshape)
newData <- melt(data, id=c("gene_id", "gene"))
newData
你得到一个这样的数据框
gene_id gene variable value
1 ENSMUSG000… RNS N1 198
2 ENSMUSG000… RNS2 N1 199
3 ENSMUSG000… RNS N2 182
4 ENSMUSG000… RNS2 N2 198
5 ENSMUSG000… RNS N3 206
用每个组的名称(N、T 或 M)创建一个新列
count = 0
for(value in newData$variable){
# To get the group of each value
if(startsWith(value, 'N')){
group <- 'N'
}else if(startsWith(value, 'T')){
group <- 'T'
}else if(startsWith(value, 'M')){
group <- 'M'
}
# Storing the group name into a vector
if(count == 0){
vectorGroup <- group
}else{
vectorGroup <- c(vectorGroup, group)
}
count <- count + 1
}
newData$group <- vectorGroup
终于画出了散点图
library(ggplot2)
ggplot(newData, aes(x = gene, y = value, color= group)) + theme_minimal() + geom_point(width = 0.5) + scale_fill_brewer(palette = 'Paired')
你得到这样的情节
您好,我想绘制不同组的散点图或点图。 我可以让它适用于单个图,但因为 ggplot2 需要 x 轴的坐标。那是我已经惹上麻烦了。 这是我的结构:
# A tibble: 2 x 33
gene_id gene N1 N2 N3 N4 N5 N6 N7 T1 T2 T3 T4
<chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 ENSMUSG000… RNS 198 182 206 183 177 194 193 173 191 167 200
2 ENSMUSG000… RNS2 199 198 216 252 273 159 164 159 162 151 199
# ... with 20 more variables: T5 <dbl>, T6 <dbl>, T7 <dbl>, T8 <dbl>, T9 <dbl>,
# T10 <dbl>, T11 <dbl>, T12 <dbl>, T13 <dbl>, T14 <dbl>, M1 <dbl>, M2 <dbl>,
# M3 <dbl>, M4 <dbl>, M5 <dbl>, M6 <dbl>, M7 <dbl>, M8 <dbl>, M9 <dbl>, M10 <dbl>
我想首先绘制所有相邻的个体,并将 N、T 和 M 分组在一起,并用不同的颜色绘制它们。我很确定一旦绘图本身起作用,我就可以分配颜色。
ggplot(a, aes(y=a[,3],x=1))+
geom_point()
在这种情况下,我的起点非常低。;;;
感谢您的帮助!
您需要将列名转换为变量。我使用了您发布的数据,但我不确定您是否期望这样的情节
data <- read.csv('tabla.csv')
data
初始数据
gene_id gene N1 N2 N3 N4 N5 N6 N7 T1 T2 T3 T4
1 ENSMUSG000… RNS 198 182 206 183 177 194 193 173 191 167 200
2 ENSMUSG000… RNS2 199 198 216 252 273 159 164 159 162 151 199
融化数据
library(reshape)
newData <- melt(data, id=c("gene_id", "gene"))
newData
你得到一个这样的数据框
gene_id gene variable value
1 ENSMUSG000… RNS N1 198
2 ENSMUSG000… RNS2 N1 199
3 ENSMUSG000… RNS N2 182
4 ENSMUSG000… RNS2 N2 198
5 ENSMUSG000… RNS N3 206
用每个组的名称(N、T 或 M)创建一个新列
count = 0
for(value in newData$variable){
# To get the group of each value
if(startsWith(value, 'N')){
group <- 'N'
}else if(startsWith(value, 'T')){
group <- 'T'
}else if(startsWith(value, 'M')){
group <- 'M'
}
# Storing the group name into a vector
if(count == 0){
vectorGroup <- group
}else{
vectorGroup <- c(vectorGroup, group)
}
count <- count + 1
}
newData$group <- vectorGroup
终于画出了散点图
library(ggplot2)
ggplot(newData, aes(x = gene, y = value, color= group)) + theme_minimal() + geom_point(width = 0.5) + scale_fill_brewer(palette = 'Paired')
你得到这样的情节