使用rms包中的bplot函数绘制轮廓图

时间:2018-02-12 10:51:29

标签: r ggplot2 contour rms

我一直试图根据“rms”包中的bplot函数为R预测模型绘制等高线图。代码如下:

.container {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  /*background-color: red*/
}
.clr {
    color: #f35626;
    background-image: -webkit-linear-gradient(92deg,#f35626,#feab3a);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    -webkit-animation: hue 30s infinite linear;
}
@-webkit-keyframes hue {
    from {
      -webkit-filter: hue-rotate(0deg);
    }   
    to {
      -webkit-filter: hue-rotate(360deg);
    }
}
.awesome {     
      font-family: futura;
      font-style: italic;
      color:#313131;
      font-size:45px;
      font-weight: bold;
      -webkit-animation:colorchange 20s infinite alternate;
    }
    @-webkit-keyframes colorchange {
      0% {   
        color: blue;
      }
      10% { 
        color: #8e44ad;
      }
      20% { 
        color: #1abc9c;
      }
      30% { 
        color: #d35400;
      }
      40% { 
        color: blue;
      }
      50% { 
        color: #34495e;
      }
      60% { 
        color: blue;
      }
      70% {
        color: #2980b9;
      }
      80% {
        color: #f1c40f;
      }
      90% {
        color: #2980b9;
      }
      100% {
        color: pink;
      }
    }

我注意到输出数字是这样的:

enter image description here

我无法找到如何平滑两个填充区域之间的锯齿状边界线,所以我想知道是否可以使用ggplot2制作预测模型的这种等高线图,或者是否有任何其他解决方案来平滑锯齿形边界线。

1 个答案:

答案 0 :(得分:0)

您可以使用geom_tilegeom_contour的组合来绘制类似的情节。

library(ggplot2)
ggplot(data.frame(p), aes(age, cholesterol, fill = yhat, z = yhat)) +
    geom_tile() +
    geom_contour(color = "black") +
    scale_fill_distiller(palette = "Spectral", limits = c(-2, 2)) +
    labs(x = "Age",
         y = expression(Total~Cholesterol["mg/dl"]),
         fill = NULL) +
    facet_grid(~ sex) +
    theme_classic()

enter image description here

编辑:当OP请求我添加了离散颜色:

ggplot(data.frame(p), aes(age, cholesterol, z = yhat)) +
    geom_tile(aes(fill = factor(round(yhat)))) +
    geom_contour(color = "black") +
    labs(x = "Age",
         y = expression(Total~Cholesterol["mg/dl"]),
         fill = NULL) +
    facet_grid(~ sex) +
    theme_classic()