【问题标题】:How to build a ggplot geom_point() for my data in R?如何在 R 中为我的数据构建 ggplot geom_point()?
【发布时间】:2018-01-24 06:38:55
【问题描述】:

我有一个转置的数据框,现在看起来几乎完全一样(还有更多列):

           amiloride  BRD-K14844937 flupentixol 
PC3        35.28         63.64       54.02   
VCAP        0.00        -65.70      -53.37   
A375       -2.69          0.00      -96.26   
A549        0.00          0.00        0.00   
HA1E        0.00        -95.85       55.20  
HCC515     18.63        -48.56        0.00  

> str(ttoPlotDF)
'data.frame':   9 obs. of  56 variables:
 $ amiloride                  : chr  " 35.28" "  0.00" " -2.69" "  0.00" ...
 $ BRD-K14844937              : chr  " 63.64" "-65.70" "  0.00" "  0.00" ...
 $ flupentixol                : chr  " 54.02" "-53.37" "-96.26" "  0.00" ...

> names(ttoPlotDF)
 [1] "amiloride"                   "BRD-K14844937"              
 [3] "flupentixol"

我想使用 ggplot() + geom_point() 绘制数据,以便每列九个数字在同一 x 位置显示为垂直散点。然后我会移动到下一列九个数字并将它们绘制在相同的位置,即在移动到下一个之前堆叠我的结果。

我怀疑这涉及数据框操作以使aes() 正确。不过,目前我的见识有限。我将不胜感激。

另外,这可能有点问题。我会怎么做:

  1. 使每个 PC3 点、VCAP 点、A375 点等在绘图列条纹上成为相同的符号?
  2. 使 [-100:-90] 范围内的所有点与不在该小范围内的点的颜色不同?

数据

structure(list(amiloride = c(" 35.28", " 0.00", " -2.69", " 0.00", 
" 0.00"), `BRD-K14844937` = c(" 63.64", "-65.70", " 0.00", 
" 0.00", "-95.85"), flupentixol = c(" 54.02", "-53.37", "-96.26", 
" 0.00", " 55.20")), .Names = c("amiloride", "BRD-K14844937", 
"flupentixol"), row.names = c("PC3", "VCAP", "A375", "A549", 
"HA1E"), class = "data.frame")

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    阅读您的描述,我认为您正在寻找类似的东西。正如您所描述的,我认为您希望拥有长格式的数据。我在数据中添加了行名,将其转换为长格式数据,并添加了一个新列,指示数字是否保持在 -90 和 -100 之间。数据准备好后,我绘制了以下图形。我为Group 的每个级别分配了符号。颜色是根据out 中的check 列分配的。

    library(tidyverse)
    
    out <- rownames_to_column(mydf) %>%
           gather(key = variable, value = value, -rowname) %>%
           mutate(check = between(value, -100, -90))
    
    ggplot(data = out, aes(x = variable, y = value, color = check, shape = rowname)) +
    geom_point() +
    labs(x = "Group", shape = "Group") +
    guides(color = FALSE)
    

    数据

    mydf <- structure(list(amiloride = c(35.28, 0, -2.69, 0, 0, 18.63), BRD.K14844937 = c(63.64, 
    -65.7, 0, 0, -95.85, -48.56), flupentixol = c(54.02, -53.37, 
    -96.26, 0, 55.2, 0)), .Names = c("amiloride", "BRD.K14844937", 
    "flupentixol"), class = "data.frame", row.names = c("PC3", "VCAP", 
    "A375", "A549", "HA1E", "HCC515"))
    

    【讨论】:

    • 感谢您的意见。几乎!恐怕我的描述可能失败了。而不是单独的图,我希望它们都在一个上,例如,A375、A549、HA1 等的值,因为阿米洛利被分组在同一个 X 位置,然后 BRD-K14844937 被分组在下一个 X 位置。我有 40 种药物(例如阿米洛利)和它们的 9 种细胞系反应(例如 A375),所以我想把它们都放在一张图上。这是我能找到的最好的图片:ling.upenn.edu/~joseff/rstudy/plots/ggplotintro/group1.png 注意点是如何堆叠的。
    • @AnthonyNash 我想我知道你的意思。让我修改。
    • @AnthonyNash 我更新了代码。这就是你所追求的吗?
    • @AnthonyNash 我想我弄错了。让我澄清你的观点。看到你说的,我想你想在x轴上有amilorideBRD.K14844937flupentixol 。对吗?
    • 这正是我想要的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-28
    • 1970-01-01
    • 1970-01-01
    • 2021-12-09
    • 2020-05-14
    相关资源
    最近更新 更多