用ggplot2绘制热图; logscale颜色和修改颜色图例

时间:2011-02-21 17:33:17

标签: r ggplot2 legend heatmap

我正在尝试使用ggplot2创建热图(您会看到下面的代码) 现在有两件事我想改变:

  1. 我绘制pValues(希望非常小),所以我想绘制颜色logscale。我在不同的版本中尝试了trans =“log”,但没有一个工作
  2. 我想在图例中显示6个以上的值。我试过,例如打破,标签,但这不起作用

    (p <- ggplot(dataPVal.m, aes(variable, structure)) + 
          geom_tile(aes(fill = pValue), colour = "white") + 
          scale_colour_gradientn(colour = rainbow(100), breaks = c(1,2,3,4,5,6), labels =c("a","b","c","d","e","f")) +
          theme_grey(base_size = base_size) + 
          labs(x = "position (0=seed start)",y = "structure") + ## labels
          #scale_x_discrete(expand = c(0.01, 0.01)) +            ## grauer rand oben/unten
          #scale_y_discrete(expand = c(0.01, 0.01)) +            ## grauer rand links/rechts
          opts(title=plot_title,legend.position = "left",axis.ticks = theme_blank(), axis.text.x = theme_text(size = base_size * 0.8, angle = 330, hjust = 0, colour = "grey50"))
    )
    
  3. 这是pValue-table(dataPVal.m)的一个例子:

            structure variable      value     pValue
    1          CB      -10 1.00000000 1.00000000
    2          BB      -10 1.00000000 1.00000000
    3          SC      -10 0.34700205 0.34700205
    4          GC      -10 1.00000000 1.00000000
    5          BC      -10 1.00000000 1.00000000
    6          SG      -10 0.44494198 0.44494198
    7          JG      -10 1.00000000 1.00000000
    8          IG      -10 1.00000000 1.00000000
    9          HG      -10 1.00000000 1.00000000
    10         CG      -10 1.00000000 1.00000000
    11         HH      -10 1.00000000 1.00000000
    12         GH      -10 0.34375000 0.00000025
    13         SI      -10 0.25000000 0.25000000
    14         JI      -10 0.40359735 0.40359735
    15         II      -10 1.00000000 1.00000000
    16         GI      -10 1.00000000 1.00000000
    17         SJ      -10 0.53296021 0.53296021
    18         IJ      -10 1.00000000 1.00000000
    19         GJ      -10 1.00000000 1.00000000
    20         US      -10 0.19567557 0.19567557
    21         SS      -10 0.43017585 0.00000032
    22         JS      -10 1.00000000 1.00000000
    23         IS      -10 1.00000000 1.00000000
    24         GS      -10 1.00000000 1.00000000
    25         CS      -10 1.00000000 1.00000000
    26         UU      -10 0.39863089 0.39863089
    27         SU      -10 0.50000000 0.50000000
    28         JU      -10 1.00000000 1.00000000
    29         CB       -9 0.34944171 0.34944171
    30         BB       -9 1.00000000 1.00000000
    31         SC       -9 0.53230531 0.53230531
    

    有没有人解决这两个问题?

    THX 这么久

1 个答案:

答案 0 :(得分:8)

当我插入

+ scale_fill_gradient( trans = 'log' ) +

geom_tile(...)之后它确实将填充比例更改为对数,并且pValuee^0, e^(-2),...e^(-14))有8个图例条目。那是你试过的吗?