我一直试图根据“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;
}
}
我注意到输出数字是这样的:
我无法找到如何平滑两个填充区域之间的锯齿状边界线,所以我想知道是否可以使用ggplot2制作预测模型的这种等高线图,或者是否有任何其他解决方案来平滑锯齿形边界线。
答案 0 :(得分:0)
您可以使用geom_tile
和geom_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()
编辑:当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()