geom_raster():简单的例子

时间:2017-03-30 19:44:00

标签: r ggplot2

在跟随documentation时,我没有遇到geom_raster()的问题,但我没有成功地从模拟数据制作我自己的情节。例如,给出以下数据

R>true

x1     x2    risk
.82    .80   2.44
.87    -.72  -.57
-.42   .97   1.52
.66    .89   2.44
.28   -.83   -1.38

我用以下内容构建了一个ggplot:

R> p <- ggplot(true, aes(x1, x2)) +
 geom_raster(aes(fill = risk))

R> p

这给了我一个空白的情节。我不知道为什么会这样。

这是请求的输出:

> dput(true)
structure(list(x1 = c(0.829612086992711, 0.874150826595724, -0.427720930427313, 
0.660895252134651, 0.283491037786007, 0.0381918982602656, 0.473176629282534, 
-0.730666805524379, 0.313984580803663, 0.410129568073899, -0.0845164475031197, 
0.438224503304809, 0.869344494305551, -0.489142351318151, -0.0754143549129367, 
0.880029045511037, 0.956452856771648, -0.765025276690722, -0.0500058368779719, 
0.120665492489934), x2 = c(0.808062774594873, -0.722579664550722, 
0.977783457841724, 0.89333646511659, -0.835124883800745, 0.0284235686995089, 
-0.219593065790832, 0.811476261820644, -0.10606074379757, 0.672008519992232, 
0.475191235542297, 0.622110282536596, -0.22378343436867, 0.370339458808303, 
-0.992103322409093, 0.665832160506397, -0.985331706237048, -0.584682054352015, 
0.813202815596014, 0.223557286895812), x3 = c(-0.240881518926471, 
-0.128456830047071, -0.925137934274971, 0.947079827543348, -0.136497502215207, 
0.915153193287551, 0.775509811006486, 0.279957538936287, 0.941933220718056, 
0.237676414661109, -0.333145577460527, -0.306503503583372, -0.20302917715162, 
0.569385551381856, -0.922127017751336, 0.497590772341937, 0.35455366037786, 
-0.657471339218318, -0.477824072353542, 0.0288258693180978), 
    x4 = c(0.351214549038559, 0.965634395834059, 0.519088535103947, 
    0.132976848166436, 0.699379437137395, -0.62105212919414, 
    -0.457426770590246, 0.656316970475018, 0.386409640777856, 
    -0.518910520710051, -0.914022407960147, -0.719041811767966, 
    -0.567229169886559, -0.041202871594578, -0.605179315432906, 
    0.438711675349623, -0.984230522532016, -0.249020070768893, 
    0.0288154166191816, -0.996858891565353), x5 = c(0.163208005018532, 
    -0.684189583640546, -0.281943388283253, 0.291263756807894, 
    0.551646725274622, 0.127293683122844, -0.532593202777207, 
    -0.820038967300206, -0.828775870148093, -0.389563261065632, 
    0.334853029344231, -0.999522206839174, -0.582860086113214, 
    0.866068254690617, 0.851289497222751, 0.468188602011651, 
    -0.333856033161283, 0.0301266596652567, 0.487949292641133, 
    0.238318480085582), risk = c(2.44573763618246, -0.57100850250572, 
    1.52784598525614, 2.44756818236783, -1.38675872981548, 0.0950390356592834, 
    0.03399049770087, 0.892285718116909, 0.101863093208522, 1.75414660805836, 
    0.865866023581475, 1.682445068378, 0.421777625568211, 0.251536566298455, 
    -2.05962099973112, 2.21169336652383, -1.01421055570245, -1.93438938539475, 
    1.57639979431406, 0.567780066281557), time = c(12.9241509784045, 
    0.754603959518346, 0.677189139459449, 2.07339828770144, 0.109777657032991, 
    1.39996365414718, 0.167462659974731, 1.09586349933275, 0.463151062910805, 
    2.32239195497809, 1.52799525778206, 13.5096449131547, 2.39962724414737, 
    3.03968330607599, 0.1532054718408, 5.79336751789379, 0.633832566535867, 
    0.0149323120147296, 2.12249155520952, 1.74580444108114), 
    is_censored = c(0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 
    0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L)), .Names = c("x1", "x2", 
"x3", "x4", "x5", "risk", "time", "is_censored"), class = c("tbl_df", 
"tbl", "data.frame"), row.names = c(NA, -20L))
> sessionInfo()
R version 3.3.1 (2016-06-21)
Platform: x86_64-apple-darwin13.4.0 (64-bit)
Running under: OS X 10.10.5 (Yosemite)

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] grid      stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] gridExtra_2.2.1 dplyr_0.5.0     purrr_0.2.2     readr_1.0.0     tidyr_0.6.1     tibble_1.2     
[7] ggplot2_2.2.1   tidyverse_1.1.1

loaded via a namespace (and not attached):
 [1] Rcpp_0.12.9      plyr_1.8.4       forcats_0.2.0    tools_3.3.1      digest_0.6.12    evaluate_0.10   
 [7] jsonlite_1.2     lubridate_1.6.0  gtable_0.2.0     nlme_3.1-131     lattice_0.20-34  psych_1.6.12    
[13] DBI_0.5-1        yaml_2.1.14      parallel_3.3.1   haven_1.0.0      stringr_1.2.0    httr_1.2.1      
[19] knitr_1.15.1     xml2_1.1.1       hms_0.3          rprojroot_1.2    R6_2.2.0         readxl_0.1.1    
[25] rmarkdown_1.3    foreign_0.8-67   reshape2_1.4.2   modelr_0.1.0     magrittr_1.5     backports_1.0.5 
[31] htmltools_0.3.5  scales_0.4.1     assertthat_0.1   mnormt_1.5-5     rvest_0.3.2      colorspace_1.3-2
[37] labeling_0.3     stringi_1.1.2    lazyeval_0.2.0   munsell_0.4.3    broom_0.4.2 

以下代码比前一个示例更好地再现了问题:

true <- list(x1 = c(0.829612086992711, 0.874150826595724, -0.427720930427313, 
0.660895252134651, 0.283491037786007, 0.0381918982602656, 0.473176629282534, 
-0.730666805524379, 0.313984580803663, 0.410129568073899, -0.0845164475031197, 
0.438224503304809, 0.869344494305551, -0.489142351318151, -0.0754143549129367, 
0.880029045511037, 0.956452856771648, -0.765025276690722, -0.0500058368779719, 
0.120665492489934), x2 = c(0.808062774594873, -0.722579664550722, 
0.977783457841724, 0.89333646511659, -0.835124883800745, 0.0284235686995089, 
-0.219593065790832, 0.811476261820644, -0.10606074379757, 0.672008519992232, 
0.475191235542297, 0.622110282536596, -0.22378343436867, 0.370339458808303, 
-0.992103322409093, 0.665832160506397, -0.985331706237048, -0.584682054352015, 
0.813202815596014, 0.223557286895812), risk = c(2.44573763618246, -0.57100850250572, 
    1.52784598525614, 2.44756818236783, -1.38675872981548, 0.0950390356592834, 
    0.03399049770087, 0.892285718116909, 0.101863093208522, 1.75414660805836, 
    0.865866023581475, 1.682445068378, 0.421777625568211, 0.251536566298455, 
    -2.05962099973112, 2.21169336652383, -1.01421055570245, -1.93438938539475, 
    1.57639979431406, 0.567780066281557))
true <- as_tibble(true)
true

p6 <- ggplot(true, aes(x1, x2)) +
 geom_raster(aes(fill = risk))
p6

1 个答案:

答案 0 :(得分:0)

你的情节不是空白的,因为chainx1和ggplot轴中的数字很小,你看不到它们。

因此,为了在情节中看到它们,我将x2x1中的所有数字四舍五入为小数点后两位。

首先,我已将x2转换为true,然后舍入所有数字。

data frame

然后我使用你的代码进行了策划

true <-  as.data.frame(true)
number <- sapply(true, is.numeric)
true[number ] <- lapply(true[number ], round, 2)

输出:

enter image description here

注意如果您不想整理数字,可以使用p6 <- ggplot(true, aes(x1, x2)) + geom_raster(aes(fill = risk)) p6 scale_x_continuous(limits = c()),以便您的数据可见。