【问题标题】:Scatter plot with groups带组的散点图
【发布时间】:2018-02-16 02:08:53
【问题描述】:

您好,我想做一个不同组的散点图或点图。 我可以让它适用于单个地块,但因为 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 和 Ms 组合在一起并用不同的颜色绘制它们。我很确定一旦绘图本身起作用,我就可以分配颜色。

ggplot(a, aes(y=a[,3],x=1))+
geom_point()

在这种情况下,我在进程中的起点非常低。;;;

感谢您的帮助!

【问题讨论】:

    标签: r ggplot2 grouping scatter-plot


    【解决方案1】:

    您需要将列名转换为变量。我使用您发布的数据,但我不确定您是否期望这样的情节

    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') 
    

    你会得到这样的情节

    【讨论】:

    • 谢谢。但并没有改变得到:不知道如何为 data.frame 类型的对象自动选择比例。默认为连续。错误:美学长度必须为 1 或与数据(22021)相同:x,y
    • 好的,也许你可以看看你的组是否是因素
    • 不确定您的意思。但从上面的例子。你能不能给我一个例子,它是如何工作的?我试图将名称放在仅包含名称的不同表中,但这也无济于事。不确定以前是否有人遇到过这个问题。当我将列命名为 1、2、3....时也是如此。
    • 我想我明白问题所在了。我更改了上面的代码,你能告诉我它是否是你所期望的吗?
    • 这真的很漂亮。因为有更多的基因,有没有办法对颜色进行分组,使其最终只有三种颜色?我试过:n
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多