【问题标题】:Show every nth row name in ggplot2在 ggplot2 中显示每第 n 行名称
【发布时间】:2015-08-28 19:08:57
【问题描述】:

我有以下长格式的数据框:

> head(cleanLongPlotData)
  Structure Method Value       Outcome
1      1A00 X1     1    Clustering
2      1A01 X1     1    Clustering
3      1A02 X1     0 No Clustering
4      1A0U X1     1    Clustering
5      1A0Z X1     1    Clustering
6      1A1M X1     0 No Clustering
> tail(cleanLongPlotData)
      Structure     Method Value       Outcome
12931      4PRN       Z        0 No Clustering
12932      4PRP       Z        0 No Clustering
12933      4PXZ       Z       -1         Blank
12934      4PY0       Z       -1         Blank
12935      4Q3H       Z       -1         Blank
12936      6HBW       Z        1    Clustering

每种方法都有 2,196 个观察值。我是这样绘制的:

    p1 <- ggplot(cleanLongPlotData, aes(x=Method, y=Structure,fill=Outcome)) + geom_tile()+
   xlab("Method") +
   ylab("Structure")+
   ggtitle("Cluster Results By Structure")+
      theme(axis.line=element_blank(),
            axis.text.y=element_blank(),axis.ticks=element_blank(),
            panel.background=element_blank(),panel.border=element_blank(),
            panel.grid.major=element_blank(),
            panel.grid.minor=element_blank(),plot.background=element_blank())+
      scale_fill_manual(values = c("#F5F5F5","green","blue"))

我已经屏蔽了这些行,因为它们相互重叠并弄得一团糟。有没有办法显示每 100 行名称?还是每 200 行名称?

【问题讨论】:

  • rownames(cleanLongPlotData)[seq(1,nrow(cleanLongPlotData),by=100L)]
  • @MichaelChirico:我得到的那部分,我更好奇我需要把它保存在哪里才能让它工作?
  • y 轴是一个因素。您是说要在 y 轴上标识每 100 个因子水平吗?这有意义吗?
  • @jlhoward:是的,y 轴只是特定蛋白质结构的一行。通过识别每 100 个结构,这将有助于强化 1)这些只是蛋白质结构,没有固有的排序;2)这些结构按照我的文本中描述的字典顺序排列。

标签: r ggplot2 heatmap


【解决方案1】:

这是一个在轴中显示每个其他因子水平的示例。不过,这似乎是一个非常糟糕的主意......

df <- data.frame(Method=rep(LETTERS[1:10], each=10),
                 Structure=rep(LETTERS[17:26]), 
                 Outcome=sample(letters[1:5],100,replace=TRUE))
library(ggplot2)
ggp <- ggplot(df, aes(Method, Structure))+geom_tile(aes(fill=Outcome))+coord_fixed()
ggp

lvls <- levels(df$Structure)
ggp + scale_y_discrete(breaks=lvls[seq(1,length(lvls),by=2)])

【讨论】:

    猜你喜欢
    • 2019-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-21
    • 1970-01-01
    相关资源
    最近更新 更多