如何在BASE R图形中绘制点范围和功能区打印?

下面是两个我想要复制的ggplot2点图,除了基本的R安装之外,它们没有依赖关系.我做not需要复制任何主题元素或标签.

library(ggplot2)
library(marginaleffects)

# point range
mod <- lm(mpg ~ hp + factor(cyl), mtcars)
dat <- data.frame(names(coef(mod)), coef(mod), confint(mod)) |>
    setNames(c("x", "y", "ymin", "ymax"))
ggplot(dat, aes(x = x, y = y, ymin = ymin, ymax = ymax)) +
    geom_pointrange()

img1

# ribbon
mod <- lm(mpg ~ hp, mtcars)
pre <- predictions(mod)
ggplot(pre, aes(x = hp, y = estimate, ymin = conf.low, ymax = conf.high)) +
    geom_ribbon(alpha = .3)

img2

推荐答案

First

我认为这里的一切都是不言而喻的,所以只需显示结果:

plot.new()
plot.window(xlim = c(1, nrow(dat)), ylim = range(dat[,-1]))
grid()

points(1:nrow(dat), dat$y)
segments(1:nrow(dat), dat$ymin, 1:nrow(dat), dat$ymax)

axis(1, at = 1:nrow(dat), dat$x)
axis(2, las = 2)

title("point-range", adj=0)
title(ylab = "beta")

first

Second

这里的主要问题是绘制多边形.多边形会一个接一个地连接所有点,因此必须对它们进行排序.因此,我对数据进行了排序.帧优先:

pre <- pre[order(pre$hp),]

在此之后,情况应该会很清楚:

plot.new()
plot.window(xlim = range(pre$hp), ylim = range(pre$conf.low, pre$conf.high))
grid()

polygon(c(pre$hp, rev(pre$hp)), c(pre$conf.low, rev(pre$conf.high)),
        col = adjustcolor("cornflowerblue", 0.3))

axis(1, lwd = 0)
axis(2, lwd = 0, las=2)

title("Ribbon", adj = 0)
title(xlab = "hp")
title(ylab = "estimate")

second

R相关问答推荐

按自定义数字模式对变量名称排序

DT::可数据的正规表达OR运算符问题

导入到固定列宽的R中时出现问题

R Lubridate:舍入/快照日期时间到一天中最近的任意时间?

在值和NA的行顺序中寻找中断模式

如何将在HW上运行的R中的消息(错误、警告等)作为批处理任务输出

R中具有gggplot 2的Likert图,具有不同的排名水平和显示百分比

用值序列对行进行子集化,并标识序列开始的列

使用R中的正则表达式将一列分割为多列

在使用bslb和bootstrap5时,有没有办法更改特定dt行的 colored颜色 ?

try 将 colored颜色 编码添加到ggploly的标题中

用约翰逊分布进行均值比较

R中边际效应包中Logistic回归的交互作用风险比

如何基于两个条件从一列中提取行

展开对数比例绘图的轴(添加填充)

R:用GGPLATE,如何在两个独立的变量中制作不同形状的散点图?

停止ggplot将多行减少到一行

根据r中每行中的日期序列,使用列名序列创建新列

将文本批注减少到gglot的y轴上的单个值

R将函数参数传递给ggploy