楼主: 猩猩大叔
6830 6

[作图问题求助] 如何能将这些图绘制在一张图里 [推广有奖]

  • 0关注
  • 0粉丝

已卖:5份资源

大专生

36%

还不是VIP/贵宾

-

威望
0
论坛币
1 个
通用积分
0.0600
学术水平
3 点
热心指数
5 点
信用等级
2 点
经验
4272 点
帖子
33
精华
0
在线时间
47 小时
注册时间
2015-7-29
最后登录
2018-1-21

楼主
猩猩大叔 学生认证  发表于 2016-1-31 10:45:53 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
楼主刚开始学stata,现在的要求是做一张图,按照省份展示每年的SO2排放总量。

tw scatter year so2, by(province)
这样出来的图是每个省份分开的
SO2_HELP.PNG

求助应该怎么样在一张图内按省份显示,每个省份用不同颜色标注,谢谢。

二维码

扫码加我 拉你入群

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

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

关键词:张图里 province Scatter vince Stata 如何

沙发
蓝色 发表于 2016-1-31 11:15:29
tw (scatter so2 year if province ==1)          ///
     (scatter so2 year if province ==2)         ///
     (scatter so2 year if province ==3)



类似上面的这个写法,把所有的都写上就可以了

藤椅
Two-Punch-Man 发表于 2016-1-31 13:06:10
难道就没有更便捷的方法了吗

板凳
niuniuyiwan 在职认证  发表于 2016-1-31 16:26:20
  1. ssc inst sepscatter
  2. webuse grunfeld, clear
  3. sepscatter mvalue time, separate(company) recast(connect) ysc(log) yla(5000 2000 1000 500 200 100) legend(pos(3) col(1))
复制代码
Graph.png
  1. webuse grunfeld, clear
  2. scatter  time mvalue, mla(company) mlabpos(0) ms(none) name(sep1, replace) xsc(log) xla(5000 2000 1000 500 200 100)
复制代码
sep1.png
已有 2 人评分学术水平 热心指数 信用等级 收起 理由
jellyqueen + 1 精彩帖子
Sunknownay + 3 + 3 + 3 精彩帖子

总评分: 学术水平 + 4  热心指数 + 3  信用等级 + 3   查看全部评分

报纸
Two-Punch-Man 发表于 2016-2-1 06:48:16
受教了 十分感谢

地板
0895825087 发表于 2020-4-4 00:06:50
niuniuyiwan 发表于 2016-1-31 16:26
您好,请问能分享sepscatter的ado文件嘛?为什么我在stata里面搜索安装不了,每次都timeout。

7
赵安豆 发表于 2024-8-30 11:42:46
要在Stata中将多个变量或组在同一张图上绘制,并使用不同的颜色来区分它们,可以使用`twoway`命令结合`by()`选项或者直接在`scatter`命令后添加`||`来叠加不同组的数据。但是为了给每个省份分配不同的颜色并保持在一张图表里,你可以采用以下方法:

假设你的数据集有三个变量:province(省份)、year(年份)和so2(SO2排放量),你首先需要将数据设置为省份数目较少时手动指定颜色,或者使用`graph twoway`的循环功能来自动生成不同的标记和线条样式。

以下是一个示例代码,假设你知道有多少个省份,并且想要手动控制每个省份的颜色:

```stata
clear all
// 假设你已经有了数据集并载入了它

local provinces: tabdisp province, nototal // 获取所有省份的列表
foreach p of local provinces {
    twoway scatter so2 year if province=="`p'", mcolor(`=c(_N)') ///
        msymbol(circle) legend(order(1 "省 `p'")) ||  ///
        /* 在这里添加更多的省份,直到覆盖所有 */
    , ytitle("SO2排放量") xtitle("年份")
}
```

但是上面的代码会为每个省份生成一个单独的图形。为了将所有的点图叠加在一个图表上,并且为每个省分配不同的颜色和标记样式,你可以使用`graph twoway`命令:

```stata
local provinces: tabdisp province, nototal // 获取所有省份的列表
twoway (scatter so2 year if province==province[1], mcolor(iceblue) msymbol(circle)) ///
       (scatter so2 year if province==province[2], mcolor(cranberry) msymbol(triangle_f)) ///
       /* 在这里添加更多的省份,直到覆盖所有 */
    , legend(order( 1 "省份1" 2 "省份2") rows(1)) title("SO2排放量按省份数量变化")
```

在上面的代码中,你需要手动替换`province[1]`, `province[2]`等为实际的省份名称,并指定每个省份的颜色和标记。如果有很多省份,这可能需要一些时间来调整颜色方案。

或者,你也可以使用循环和调色板:

```stata
local provinces: tabdisp province, nototal // 获取所有省份的列表
local i = 1
foreach p of local provinces {
    local color = "hscale(r`i')"
    twoway scatter so2 year if province=="`p'", mcolor(`color') msymbol(circle) legend(order(1 "省 `p'")) ///
        name(graph`i', replace)
    local i = `i' + 1
}
graph combine graph1 graph2 ... /* 将所有图合并,你需要列出所有的图形名称 */
```

请根据你的具体数据集调整上面的代码,并在实际使用中确保你有足够的颜色和标记选项来区分不同的省份。

此文本由CAIE学术大模型生成,添加下方二维码,优先体验功能试用



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

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