作图
先查看各命令展开的示例,再按需展开其他选项及 R 实现。改写代码前,请阅读适用条件及差异说明。
binscatter
分箱散点图
Stata
binscatter y xR 包:binsreg
binsreg::binsreg(y, x, data = data)与 Stata 有差异 statar::stat_binmean() 可以在 ggplot 中加入分箱均值:ggplot(data, aes(x, y)) + statar::stat_binmean(n = 20)。 binsreg() 默认数据驱动分箱和推断;binscatter 默认固定分位箱和 OLS 拟合。须明确匹配分箱和拟合设置。
coefplot
dotplot
按类别显示各个观测
Stata
dotplot y, over(group)R 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(group, y)) + ggplot2::geom_point(position = ggplot2::position_jitter(width = 0.15, height = 0))与 Stata 有差异 此处使用水平方向的随机扰动,不采用 Stata 的点堆叠规则。
graph
频数柱状图
Stata
graph bar (count), over(x)R 包:ggplot2
ggplot(data, aes(x)) + geom_bar()分组均值柱状图
Stata
graph bar (mean) y, over(group)R 包:ggplot2
ggplot(data, aes(group, y)) + stat_summary(fun = mean, geom = "bar")箱线图
Stata
graph box y, over(group)R 包:ggplot2
ggplot(data, aes(group, y)) + geom_boxplot()与 Stata 有差异 ggplot2 箱线折点使用 R 分位数规则;Stata 使用 Stata 百分位数,小样本和并列值时可能不同。
饼图
Stata
graph pie, over(group)R 包:ggplot2
ggplot(data, aes(x = "", fill = group)) + geom_bar() + coord_polar(theta = "y")另有 16 个示例及替代实现
组合多张图
Stata
graph combine g1.gph g2.gphR 包:patchwork
patchwork::wrap_plots(p1, p2)加载 patchwork 后,p1 + p2 效果相同。
点图
Stata
graph dot (mean) y, over(group)R 包:ggplot2
ggplot(data, aes(y, group)) + stat_summary(fun = mean, geom = "point")水平柱状图
Stata
graph hbar (mean) y, over(group)R 包:ggplot2
ggplot(data, aes(group, y)) + stat_summary(fun = mean, geom = "bar") + coord_flip()水平箱线图
Stata
graph hbox y, over(group)R 包:ggplot2
ggplot(data, aes(y, group)) + geom_boxplot()与 Stata 有差异 ggplot2 箱线折点使用 R 分位数规则;Stata 使用 Stata 百分位数,小样本和并列值时可能不同。
散点图矩阵
Stata
graph matrix x1 x2 x3R 包:graphics
pairs(select(data, x1, x2, x3))GGally::ggpairs() 可以绘制 ggplot2 版本。
绘制各组频数
Stata
graph bar (count), over(group)R 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(group)) + ggplot2::geom_bar()与 Stata 有差异 复现所示计数、百分比或汇总图层,不复现Stata的graph显示默认值。须统一类别顺序和缺失处理;ggplot主题、轴尺度及柱标签采用R约定。
使用条形图表示组均值
Stata
graph bar (mean) y, over(group)R 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(group, y)) + ggplot2::stat_summary(fun = mean, geom = "col")与 Stata 有差异 复现所示计数、百分比或汇总图层,不复现Stata的graph显示默认值。须统一类别顺序和缺失处理;ggplot主题、轴尺度及柱标签采用R约定。
为汇总条形添加数值标签
Stata
graph bar (mean) y, over(group) blabel(bar)R 包:ggplot2
{ plot_data <- aggregate(y ~ group, data, mean); ggplot2::ggplot(plot_data, ggplot2::aes(group, y)) + ggplot2::geom_col() + ggplot2::geom_text(ggplot2::aes(label = round(y, 1)), vjust = -0.3) }与 Stata 有差异 复现所示计数、百分比或汇总图层,不复现Stata的graph显示默认值。须统一类别顺序和缺失处理;ggplot主题、轴尺度及柱标签采用R约定。
使用条形图表示组中位数
Stata
graph bar (median) y, over(group)R 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(group, y)) + ggplot2::stat_summary(fun = median, geom = "col")与 Stata 有差异 复现所示计数、百分比或汇总图层,不复现Stata的graph显示默认值。须统一类别顺序和缺失处理;ggplot主题、轴尺度及柱标签采用R约定。
绘制各组百分比
Stata
graph bar (percent), over(group)R 包:ggplot2
{ counts <- as.data.frame(table(data$group)); ggplot2::ggplot(counts, ggplot2::aes(Var1, Freq / sum(Freq) * 100)) + ggplot2::geom_col() }与 Stata 有差异 复现所示计数、百分比或汇总图层,不复现Stata的graph显示默认值。须统一类别顺序和缺失处理;ggplot主题、轴尺度及柱标签采用R约定。
使用条形图表示组内合计
Stata
graph bar (sum) y, over(group)R 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(group, y)) + ggplot2::stat_summary(fun = sum, geom = "col")与 Stata 有差异 复现所示计数、百分比或汇总图层,不复现Stata的graph显示默认值。须统一类别顺序和缺失处理;ggplot主题、轴尺度及柱标签采用R约定。
使用箱线图比较分布
Stata
graph box y, over(group)R 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(group, y)) + ggplot2::geom_boxplot()与 Stata 有差异 若要求数值一致,应核对箱线图的分位点和须线默认规则。
隐藏箱线图离群点标记
Stata
graph box y, over(group) nooutsidesR 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(group, y)) + ggplot2::geom_boxplot(outlier.shape = NA)与 Stata 有差异 若要求数值一致,应核对箱线图的分位点和须线默认规则。
使用点图表示组均值
Stata
graph dot (mean) y, over(group)R 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(y, group)) + ggplot2::stat_summary(fun = mean, geom = "point")与 Stata 有差异 复现所示计数、百分比或汇总图层,不复现Stata的graph显示默认值。须统一类别顺序和缺失处理;ggplot主题、轴尺度及柱标签采用R约定。
绘制水平箱线图
Stata
graph hbox y, over(group)R 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(y, group)) + ggplot2::geom_boxplot()与 Stata 有差异 若要求数值一致,应核对箱线图的分位点和须线默认规则。
heatplot
按 x、y 分箱绘制 z 均值的热图
Stata
heatplot z y xR 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(x, y, z = z)) + ggplot2::stat_summary_2d(fun = mean)与 Stata 有差异 社区命令。两者都在单元格内计算 z 的均值,但分箱数量及边界不同;比较时请明确设定分箱(Stata 的 bins(),R 的 bins =)。配色采用各自默认设置。
另有 1 个示例及替代实现
按 x、y 类别绘制 z 均值的热图
Stata
heatplot z i.y i.xR 包:ggplot2
ggplot2::ggplot(stats::aggregate(z ~ x + y, data = data, FUN = mean), ggplot2::aes(factor(x), factor(y), fill = z)) + ggplot2::geom_tile()与 Stata 有差异 社区命令。每个出现过的 x、y 组合对应一个方块,填充 z 的均值;两者都不绘制空组合。
histogram
直方图
Stata
histogram xR 包:ggplot2
ggplot(data, aes(x)) + geom_histogram()与 Stata 有差异 geom_histogram() 默认计数和 30 箱;Stata histogram 默认密度,分箱规则也不同。须指定切点或箱宽及纵轴统计量。
另有 6 个示例及替代实现
按组比较直方图
Stata
histogram y, by(group)R 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(y)) + ggplot2::geom_histogram(bins = 10) + ggplot2::facet_wrap(~group)与 Stata 有差异 若要匹配 Stata 的各组频数,需要明确指定分组边界和区间开闭规则。
绘制密度直方图
Stata
histogram y, densityR 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(y, ggplot2::after_stat(density))) + ggplot2::geom_histogram(bins = 10)与 Stata 有差异 若要匹配 Stata 的各组频数,需要明确指定分组边界和区间开闭规则。
绘制频数直方图
Stata
histogram y, frequencyR 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(y)) + ggplot2::geom_histogram(bins = 10)与 Stata 有差异 若要匹配 Stata 的各组频数,需要明确指定分组边界和区间开闭规则。
绘制百分比直方图
Stata
histogram y, percentR 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(y, ggplot2::after_stat(count / sum(count) * 100))) + ggplot2::geom_histogram(bins = 10)与 Stata 有差异 若要匹配 Stata 的各组频数,需要明确指定分组边界和区间开闭规则。
设置直方图组距和边界
Stata
histogram y, width(2) start(0)R 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(y)) + ggplot2::geom_histogram(binwidth = 2, boundary = 0)与 Stata 有差异 若要匹配 Stata 的各组频数,需要明确指定分组边界和区间开闭规则。
为整数取值绘制直方图
Stata
histogram z, discreteR 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(z)) + ggplot2::geom_histogram(binwidth = 1, boundary = 0.5)与 Stata 有差异 若要匹配 Stata 的各组频数,需要明确指定分组边界和区间开闭规则。
kdensity
核密度图
Stata
kdensity xR 包:ggplot2
ggplot(data, aes(x)) + geom_density()与 Stata 有差异 核密度默认带宽规则不同;比较曲线前须指定核函数、带宽和计算范围。
另有 4 个示例及替代实现
绘制核密度估计
Stata
kdensity yR 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(y)) + ggplot2::geom_density()与 Stata 有差异 R 与 Stata 的带宽规则和局部平滑算法可能不同;此处提供作图替代方案,并非精确的数值复制。
估计子组核密度
Stata
kdensity y if group == "A"R 包:ggplot2
ggplot2::ggplot(subset(data, group == "A"), ggplot2::aes(y)) + ggplot2::geom_density()与 Stata 有差异 R 与 Stata 的带宽规则和局部平滑算法可能不同;此处提供作图替代方案,并非精确的数值复制。
指定核密度带宽
Stata
kdensity y, bwidth(1)R 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(y)) + ggplot2::geom_density(bw = 1)与 Stata 有差异 R 与 Stata 的带宽规则和局部平滑算法可能不同;此处提供作图替代方案,并非精确的数值复制。
使用高斯核进行密度估计
Stata
kdensity y, kernel(gaussian)R 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(y)) + ggplot2::geom_density(kernel = "gaussian")与 Stata 有差异 R 与 Stata 的带宽规则和局部平滑算法可能不同;此处提供作图替代方案,并非精确的数值复制。
line
折线图
Stata
line y xR 包:ggplot2
ggplot(data, aes(x, y)) + geom_line()与 Stata 有差异 geom_line() 在组内按 x 排序;Stata line/connected 未指定 sort 时按观测顺序连接。
另有 3 个示例及替代实现
按横轴顺序绘制折线图
Stata
line y x, sortR 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_line()与 Stata 有差异 对应所示坐标轴及图层;ggplot的折线按x排序,此处Stata使用sort。主题、坐标轴留白、缺失点警告和分面尺度采用R默认设置。
按组分面绘制折线图
Stata
line y x, sort by(group)R 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_line() + ggplot2::facet_wrap(~group)与 Stata 有差异 对应所示坐标轴及图层;ggplot的折线按x排序,此处Stata使用sort。主题、坐标轴留白、缺失点警告和分面尺度采用R默认设置。
设置折线颜色
Stata
line y x, sort lcolor(red)R 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_line(colour = "red")与 Stata 有差异 对应所示坐标轴及图层;ggplot的折线按x排序,此处Stata使用sort。主题、坐标轴留白、缺失点警告和分面尺度采用R默认设置。
lowess
平滑散点图
Stata
lowess y xR 包:ggplot2
ggplot(data, aes(x, y)) + geom_point() + geom_smooth(method = "loess")与 Stata 有差异 LOESS 局部多项式与 Stata LOWESS 平滑、稳健迭代和默认带宽不同;拟合曲线不保证一致。
另有 1 个示例及替代实现
绘制局部回归平滑曲线
Stata
lowess y x, bwidth(0.5)R 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_smooth(method = "loess", formula = y ~ x, span = 0.5, se = FALSE)与 Stata 有差异 R 与 Stata 的带宽规则和局部平滑算法可能不同;此处提供作图替代方案,并非精确的数值复制。
pchi
比较经验概率与卡方概率
Stata
pchi y, df(2)R 包:graphics
graphics::plot(ppoints(length(data$y)), pchisq(sort(data$y), df = 2))与 Stata 有差异 这是相应的诊断图工作流程;绘图位置和标准化的默认规则可能与 Stata 不同。
pnorm
检视标准化正态 P-P 关系
Stata
pnorm yR 包:graphics
graphics::plot(ppoints(length(data$y)), pnorm(as.numeric(scale(sort(data$y)))), xlab = "Empirical", ylab = "Normal")与 Stata 有差异 这是相应的诊断图工作流程;绘图位置和标准化的默认规则可能与 Stata 不同。
qchi
比较样本分位数与卡方分位数
Stata
qchi y, df(2)R 包:graphics
graphics::plot(qchisq(ppoints(length(data$y)), df = 2), sort(data$y))与 Stata 有差异 这是相应的诊断图工作流程;绘图位置和标准化的默认规则可能与 Stata 不同。
qnorm
正态分位数图
Stata
qnorm xR 包:ggplot2
ggplot(data, aes(sample = x)) + geom_qq() + geom_qq_line()与 Stata 有差异 geom_qq() 默认理论标准正态分位数;qnorm 按样本均值和标准差缩放正态轴。比较点位须匹配轴尺度。
qqplot
使用 Q-Q 图比较两个经验分布
Stata
qqplot y xR 包:stats
stats::qqplot(data$x, data$y)与 Stata 有差异 这是相应的诊断图工作流程;绘图位置和标准化的默认规则可能与 Stata 不同。
quantile
绘制有序观测与累计比例的关系
Stata
quantile yR 包:graphics
graphics::plot(ppoints(sum(!is.na(data$y))), sort(data$y), xlab = "Fraction", ylab = "y")与 Stata 有差异 这是相应的诊断图工作流程;绘图位置和标准化的默认规则可能与 Stata 不同。
scatter
另有 23 个示例及替代实现
给点加标签
Stata
scatter y x, mlabel(name)R 包:ggplot2
ggplot(data, aes(x, y, label = name)) + geom_point() + geom_text()添加参考线
Stata
scatter y x, xline(0)R 包:ggplot2
ggplot(data, aes(x, y)) + geom_point() + geom_vline(xintercept = 0)geom_hline(yintercept = 0) 相当于 yline()。
使用 ggplot2 绘制散点图
Stata
scatter y xR 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_point()与 Stata 有差异 对应所示坐标轴及图层;ggplot的折线按x排序,此处Stata使用sort。主题、坐标轴留白、缺失点警告和分面尺度采用R默认设置。
将绘图区设为正方形
Stata
scatter y x, aspectratio(1)R 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_point() + ggplot2::theme(aspect.ratio = 1)与 Stata 有差异 该 R 示例实现相同的作图目的,但尺寸、随机扰动和主题参数的数值尺度不与 Stata 完全一致。
按组分面绘制散点图
Stata
scatter y x, by(group)R 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_point() + ggplot2::facet_wrap(~group)与 Stata 有差异 该 R 示例实现相同的作图目的,但尺寸、随机扰动和主题参数的数值尺度不与 Stata 完全一致。
对重叠观测添加随机扰动
Stata
scatter y x, jitter(2)R 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_jitter(width = 0.2, height = 0.2)与 Stata 有差异 该 R 示例实现相同的作图目的,但尺寸、随机扰动和主题参数的数值尺度不与 Stata 完全一致。
隐藏图例
Stata
scatter y x, legend(off)R 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_point(ggplot2::aes(colour = group)) + ggplot2::theme(legend.position = "none")与 Stata 有差异 该 R 示例实现相同的作图目的,但尺寸、随机扰动和主题参数的数值尺度不与 Stata 完全一致。
设置散点颜色
Stata
scatter y x, mcolor(red)R 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_point(colour = "red")与 Stata 有差异 该 R 示例实现相同的作图目的,但尺寸、随机扰动和主题参数的数值尺度不与 Stata 完全一致。
使用变量给散点添加标签
Stata
scatter y x, mlabel(label)R 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_text(ggplot2::aes(label = label))与 Stata 有差异 该 R 示例实现相同的作图目的,但尺寸、随机扰动和主题参数的数值尺度不与 Stata 完全一致。
增大散点尺寸
Stata
scatter y x, msize(large)R 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_point(size = 3)与 Stata 有差异 该 R 示例实现相同的作图目的,但尺寸、随机扰动和主题参数的数值尺度不与 Stata 完全一致。
绘制空心圆散点
Stata
scatter y x, msymbol(Oh)R 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_point(shape = 1)与 Stata 有差异 该 R 示例实现相同的作图目的,但尺寸、随机扰动和主题参数的数值尺度不与 Stata 完全一致。
添加图形来源说明
Stata
scatter y x, note("Source: survey")R 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_point() + ggplot2::labs(caption = "Source: survey")与 Stata 有差异 该 R 示例实现相同的作图目的,但尺寸、随机扰动和主题参数的数值尺度不与 Stata 完全一致。
使用适合黑白输出的主题
Stata
scatter y x, scheme(s2mono)R 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_point() + ggplot2::theme_bw()与 Stata 有差异 该 R 示例实现相同的作图目的,但尺寸、随机扰动和主题参数的数值尺度不与 Stata 完全一致。
添加图形副标题
Stata
scatter y x, subtitle("Wave 1")R 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_point() + ggplot2::labs(subtitle = "Wave 1")与 Stata 有差异 该 R 示例实现相同的作图目的,但尺寸、随机扰动和主题参数的数值尺度不与 Stata 完全一致。
添加图形标题
Stata
scatter y x, title("Sample")R 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_point() + ggplot2::labs(title = "Sample")与 Stata 有差异 该 R 示例实现相同的作图目的,但尺寸、随机扰动和主题参数的数值尺度不与 Stata 完全一致。
设置横轴刻度
Stata
scatter y x, xlabel(0(5)30)R 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_point() + ggplot2::scale_x_continuous(breaks = seq(0, 30, 5))与 Stata 有差异 该 R 示例实现相同的作图目的,但尺寸、随机扰动和主题参数的数值尺度不与 Stata 完全一致。
添加垂直参考线
Stata
scatter y x, xline(10)R 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_point() + ggplot2::geom_vline(xintercept = 10)与 Stata 有差异 该 R 示例实现相同的作图目的,但尺寸、随机扰动和主题参数的数值尺度不与 Stata 完全一致。
使用对数横轴
Stata
scatter y x, xscale(log)R 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_point() + ggplot2::scale_x_log10()与 Stata 有差异 该 R 示例实现相同的作图目的,但尺寸、随机扰动和主题参数的数值尺度不与 Stata 完全一致。
设置横轴标题
Stata
scatter y x, xtitle("Age")R 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_point() + ggplot2::labs(x = "Age")与 Stata 有差异 该 R 示例实现相同的作图目的,但尺寸、随机扰动和主题参数的数值尺度不与 Stata 完全一致。
设置纵轴刻度
Stata
scatter y x, ylabel(0(5)20)R 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_point() + ggplot2::scale_y_continuous(breaks = seq(0, 20, 5))与 Stata 有差异 该 R 示例实现相同的作图目的,但尺寸、随机扰动和主题参数的数值尺度不与 Stata 完全一致。
添加水平参考线
Stata
scatter y x, yline(5)R 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_point() + ggplot2::geom_hline(yintercept = 5)与 Stata 有差异 该 R 示例实现相同的作图目的,但尺寸、随机扰动和主题参数的数值尺度不与 Stata 完全一致。
使用对数纵轴
Stata
scatter y x, yscale(log)R 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_point() + ggplot2::scale_y_log10()与 Stata 有差异 该 R 示例实现相同的作图目的,但尺寸、随机扰动和主题参数的数值尺度不与 Stata 完全一致。
设置纵轴标题
Stata
scatter y x, ytitle("Income")R 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_point() + ggplot2::labs(y = "Income")与 Stata 有差异 该 R 示例实现相同的作图目的,但尺寸、随机扰动和主题参数的数值尺度不与 Stata 完全一致。
serrbar
绘制已有估计值及标准误
Stata
serrbar y se xR 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_errorbar(ggplot2::aes(ymin = y - se, ymax = y + se)) + ggplot2::geom_point()与 Stata 有差异 此处 se 为已有的标准误变量,Stata serrbar 默认显示一个标准误的范围;请按实际数据修改变量名。
set
spikeplot
使用针状线表示各个取值的频数
Stata
spikeplot zR 包:graphics
{ counts <- as.data.frame(table(data$z)); graphics::plot(as.numeric(as.character(counts$Var1)), counts$Freq, type = "h") }与 Stata 有差异 为每个观测取值按频数绘制竖线。坐标刻度、线宽、缺失处理和图形设备样式不同于Stata的spikeplot。
symplot
检查样本中位数两侧的对称性
Stata
symplot yR 包:graphics
{ values <- sort(data$y); half <- length(values) %/% 2L; centre <- median(values); graphics::plot(centre - rev(head(values, half)), tail(values, half) - centre) }与 Stata 有差异 这是相应的诊断图工作流程;绘图位置和标准化的默认规则可能与 Stata 不同。
twoway
散点图加拟合线
Stata
twoway (scatter y x) (lfit y x)R 包:ggplot2
ggplot(data, aes(x, y)) + geom_point() + geom_smooth(method = "lm")与 Stata 有差异 geom_smooth(method = “lm”) 默认添加置信带,而 lfit 不含置信带。匹配图层须设 se = FALSE。
带标记点的折线图
Stata
twoway connected y xR 包:ggplot2
ggplot(data, aes(x, y)) + geom_line() + geom_point()与 Stata 有差异 geom_line() 在组内按 x 排序;Stata line/connected 未指定 sort 时按观测顺序连接。
区间阴影图
Stata
twoway rarea hi lo xR 包:ggplot2
ggplot(data, aes(x, ymin = lo, ymax = hi)) + geom_ribbon()带端帽的区间图
Stata
twoway rcap hi lo xR 包:ggplot2
ggplot(data, aes(x, ymin = lo, ymax = hi)) + geom_errorbar()另有 20 个示例及替代实现
按组用不同颜色绘制
Stata
twoway (scatter y x if g == 1) (scatter y x if g == 2)R 包:ggplot2
ggplot(data, aes(x, y, colour = factor(g))) + geom_point()带置信带的线性拟合
Stata
twoway lfitci y xR 包:ggplot2
ggplot(data, aes(x, y)) + geom_smooth(method = "lm")二次拟合曲线
Stata
twoway qfit y xR 包:ggplot2
ggplot(data, aes(x, y)) + geom_smooth(method = "lm", formula = y ~ poly(x, 2), se = FALSE)按组分面
Stata
twoway scatter y x, by(group)R 包:ggplot2
ggplot(data, aes(x, y)) + geom_point() + facet_wrap(~group)叠加线性拟合关系
Stata
twoway (scatter y x) (lfit y x)R 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_point() + ggplot2::geom_smooth(method = "lm", formula = y ~ x, se = FALSE)与 Stata 有差异 这是相应的作图工作流程,默认的图形设置可能不同。
填充折线下方区域
Stata
twoway area y x, sortR 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_area()与 Stata 有差异 这是相应的作图工作流程,默认的图形设置可能不同。
按横轴顺序连接散点
Stata
twoway connected y x, sortR 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_line() + ggplot2::geom_point()与 Stata 有差异 这是相应的作图工作流程,默认的图形设置可能不同。
在规则网格上绘制等高线
Stata
twoway contour y x zR 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_contour(ggplot2::aes(z = z))与 Stata 有差异 这是相应的作图工作流程,默认的图形设置可能不同。
绘制带垂线的散点
Stata
twoway dropline y xR 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_segment(ggplot2::aes(xend = x, yend = 0)) + ggplot2::geom_point()与 Stata 有差异 这是相应的作图工作流程,默认的图形设置可能不同。
绘制线性拟合及置信区间
Stata
twoway lfitci y xR 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_smooth(method = "lm", formula = y ~ x, level = 0.95)与 Stata 有差异 这是相应的作图工作流程,默认的图形设置可能不同。
在成对坐标间绘制箭头
Stata
twoway pcarrow y x hi zR 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_segment(ggplot2::aes(xend = z, yend = hi), arrow = grid::arrow())与 Stata 有差异 这是相应的作图工作流程,默认的图形设置可能不同。
连接成对坐标端点
Stata
twoway pcspike y x hi zR 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_segment(ggplot2::aes(xend = z, yend = hi))与 Stata 有差异 这是相应的作图工作流程,默认的图形设置可能不同。
绘制二次拟合及置信区间
Stata
twoway qfitci y xR 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_smooth(method = "lm", formula = y ~ poly(x, 2), level = 0.95)与 Stata 有差异 这是相应的作图工作流程,默认的图形设置可能不同。
绘制阴影不确定性带
Stata
twoway rarea lo hi x, sortR 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_ribbon(ggplot2::aes(ymin = lo, ymax = hi))与 Stata 有差异 这是相应的作图工作流程,默认的图形设置可能不同。
绘制上下限之间的区间条
Stata
twoway rbar lo hi xR 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_rect(ggplot2::aes(xmin = x - 0.4, xmax = x + 0.4, ymin = lo, ymax = hi))与 Stata 有差异 这是相应的作图工作流程,默认的图形设置可能不同。
绘制带端帽的不确定性区间
Stata
twoway rcap lo hi xR 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_errorbar(ggplot2::aes(ymin = lo, ymax = hi))与 Stata 有差异 这是相应的作图工作流程,默认的图形设置可能不同。
绘制区间的两个端点
Stata
twoway rscatter lo hi xR 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_point(ggplot2::aes(y = lo)) + ggplot2::geom_point(ggplot2::aes(y = hi))与 Stata 有差异 这是相应的作图工作流程,默认的图形设置可能不同。
使用垂直线表示区间
Stata
twoway rspike lo hi xR 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_linerange(ggplot2::aes(ymin = lo, ymax = hi))与 Stata 有差异 这是相应的作图工作流程,默认的图形设置可能不同。
绘制双变量散点图
Stata
twoway scatter y xR 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_point()与 Stata 有差异 这是相应的作图工作流程,默认的图形设置可能不同。
绘制从零起始的垂直针状线
Stata
twoway spike y xR 包:ggplot2
ggplot2::ggplot(data, ggplot2::aes(x, y)) + ggplot2::geom_segment(ggplot2::aes(xend = x, yend = 0))与 Stata 有差异 这是相应的作图工作流程,默认的图形设置可能不同。