楼主: ffznp
569 1

[作图问题求助] 请教大神如何取消共有坐标轴 [推广有奖]

  • 0关注
  • 0粉丝

初中生

28%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
5.0404
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
185 点
帖子
6
精华
0
在线时间
26 小时
注册时间
2022-4-19
最后登录
2025-11-25

楼主
ffznp 发表于 2023-12-21 02:05:02 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
在使用irf graph oirf命令输出脉冲响应图时,同一行的图会共用一个y轴,如何让每一张图都有自己的y轴?
        代码如下:

var $depend_var2 ,lag(1/2)
irf create three,set(three) step(10) replace


local i = 1
foreach v1 in $depend_var2 {
            irf graph oirf ,impulse(`v1') response(index)  
                graph save impulse`i'1 , replace
                irf graph oirf ,impulse(`v1') response(dprice)  
                graph save impulse`i'2 , replace
                irf graph oirf ,impulse(`v1') response(emotion)  
                graph save impulse`i'3 , replace
        local i = `i'+1
}

irf graph oirf, irf(three)
结果如下:
x.png




二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:坐标轴 response impulse replace Emotion stata作图 IRF 脉冲响应 正交化的脉冲响应函数 作图

已有 1 人评分经验 收起 理由
kychan + 30 精彩帖子

总评分: 经验 + 30   查看全部评分

沙发
Zenuzzz 学生认证  发表于 2025-8-13 18:38:27
************GPT 回答
你这个情况是因为 `irf graph oirf` 默认是 **small multiples** 布局,同一行的图共用 y 轴刻度(faceted plot 共享 scale),Stata 默认行为是为了便于比较不同响应变量的幅度。

如果你想让**每一张 IRF 图都有自己的 y 轴**,有两种思路:

---

## 方法 1:单独画图

一次只画一个 impulse-response 组合,这样自然每个图都有独立的 y 轴

```stata
* 假设 irf 已经保存为 three
irf graph oirf, irf(three) impulse(dprice) response(dprice) yrescale
irf graph oirf, irf(three) impulse(dprice) response(emotion) yrescale
irf graph oirf, irf(three) impulse(dprice) response(index) yrescale
```

* 关键是 `yrescale` 选项,它会强制 y 轴根据该图的数据重新缩放
* 缺点是图分开保存,不能像矩阵一样一次对比全部

---

## 方法 2:保留矩阵布局,但不共享 y 轴

`irf graph oirf` 自身没有直接的 `yscale(independent)` 选项,但你可以:

1. 用 `irf table oirf` 把数值导出
2. 再用 `twoway` 或 `graph combine` 画图并指定 `yscale()` 分别设置

示例:

```stata
* 导出脉冲响应数据
irf table oirf, irf(three) impulse(dprice) response(dprice emotion index) step(0/10) saving(irfdata, replace)

* 读取数据,分图画
use irfdata, clear
twoway line irf step, yscale(range(-200 400)) name(g1, replace)
twoway line irf step, yscale(range(-50 50))  name(g2, replace)
twoway line irf step, yscale(range(-10 10))  name(g3, replace)

* 再组合
graph combine g1 g2 g3, col(3)
```

* 这样每个子图的 y 轴都是独立的
* 可以根据不同变量的波动幅度手动调 `yscale(range())`

---

💡 **建议**
如果你是为了可读性和论文排版,推荐 **方法 1 + yrescale**,最简单直接,每张图的 y 轴完全独立;
如果你需要矩阵式布局但又想独立 y 轴,就用 **方法 2** 导出数据自己画。

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-5 14:01