前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Stata | 解决 graph 中 x 轴刻度重叠问题

Stata | 解决 graph 中 x 轴刻度重叠问题

作者头像
PyStaData
发布2020-07-21 10:57:23
7K0
发布2020-07-21 10:57:23
举报
文章被收录于专栏:PyStaDataPyStaData

提出问题

刚有朋友问我怎么调整 boxplot 中 x 轴标签,用上图重现了他的问题。换句话说,问题是如何解决 graph 中 x 轴重叠的问题。

分析思路

  1. 把图调整成水平(horizontal);
  2. 将 x 轴刻度倾斜,避免重叠;
  3. 更改 x 轴的刻度显示区间,这可以通过定义 x 轴值的 label 实现。

解决过程

方法一:调整为水平图

代码语言:javascript
复制
graph hbox y, over(year)

方法二:将 x 轴标签倾斜

代码语言:javascript
复制
graph box y, over(year, label(angle(45)))

方法三:调整刻度间距

代码语言:javascript
复制
forval y = 1990/2010 {
    if mod(`y', 5) {
        label def ylbl `y' `"{char 0xa0}"', add // 0xa0:NO-BREAK SPACE
    }
}
label val year ylbl
label li ylbl
graph box y, over(year)

简单解释代码中的 {char 0xa0},这是 SMCL(Stata Markup and Control Language) 语言,是 Stata 中的一种标记语言, help 文档大都是用它编写的。char 表示字符,0xa0 是 ASCII 编码的空格。所以这里实际是“偷梁换柱”,将 x 轴刻度每隔 5 个单位换为空格,这样绘制出来的图就实现了肉眼不可见的空白。

我刚开始也顺着这个思路考虑是否能通过 SMCL 语句更改 x 轴刻度的倾斜角度,但 SMCL 似乎没有并不能实现文本倾斜。对绘图中可用的 SMCL 语句,可自行 help text 查看。

附录:演示数据生成代码

代码语言:javascript
复制
clear
set obs 126
egen year = seq(), block(6) from(1990) to(2010)
set seed 2803
gen y = exp(rnormal())

参考资料

https://www.statalist.org/forums/forum/general-stata-discussion/general/1297758-axis-options-for-box-plot-how-can-i-reduce-number-of-labels-on-the-x-axis

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 PyStaData 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 提出问题
  • 分析思路
  • 解决过程
    • 方法一:调整为水平图
      • 方法二:将 x 轴标签倾斜
        • 方法三:调整刻度间距
        • 附录:演示数据生成代码
        • 参考资料
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档