Stata:如何绘制并列柱状图 + 线图?以上市公司绿色专利数量数据为例

在上市公司和绿色专利数据匹配的介绍中我们绘制了两幅图:

今天我们再来看一下在 Stata 中如何绘制这种柱状图 + 线图。

附件中有绘图所需的数据 zldata20230131.dta,这份数据的计算可以阅读上市公司和绿色专利数据匹配的介绍推文:

use zldata20230131.dta, clear

为了绘制上面效果的图,首先我们需要设置绘图主题(图表的整体样式):

这个绘图主题是我自己设计的,附件中有该主题的安装文件(使用 net install … 即可安装):

* 安装:
net install rstata_scheme.pkg, from("rstata_scheme.pkg 文件所在的文件夹路径(需要替换成自己电脑上的)") replace
* 设置使用:
set scheme lightscheme, perm
* perm 选项表示永久使用该主题。

为了绘制柱体并列的效果,我们需要生成两个辅助变量,year1 和 year2:

ren 年份 year
gen year1 = year - 0.2
gen year2 = year + 0.2

然后通过设定恰当的 barwidth() 就可以了:

tw bar 发明型专利 year1, barwidth(0.4) || ///
bar 发明型绿色专利_根据主分类号筛选 year1, barwidth(0.4) || ///
bar 实用型专利 year2, barwidth(0.4) || ///
bar 实用型绿色专利_根据主分类号筛选 year2, barwidth(0.4)

再添加 line 图层:

tw bar 发明型专利 year1, barwidth(0.4) || ///
bar 发明型绿色专利_根据主分类号筛选 year1, barwidth(0.4) || ///
bar 实用型专利 year2, barwidth(0.4) || ///
bar 实用型绿色专利_根据主分类号筛选 year2, barwidth(0.4) || ///
line 总专利数量 year || ///
line 总绿色专利数量_根据主分类号筛选 year

设置图例的位置:

tw bar 发明型专利 year1, barwidth(0.4) || ///
bar 发明型绿色专利_根据主分类号筛选 year1, barwidth(0.4) || ///
bar 实用型专利 year2, barwidth(0.4) || ///
bar 实用型绿色专利_根据主分类号筛选 year2, barwidth(0.4) || ///
line 总专利数量 year || ///
line 总绿色专利数量_根据主分类号筛选 year ||, ///
leg(order(1 "发明型专利" 2 "发明型绿色专利(根据主分类号筛选)" ///
3 "实用型专利" 4 "实用型绿色专利(根据主分类号筛选)" ///
5 "总专利数量" 6 "总绿色专利数量(根据主分类号筛选)") ///
pos(11) ring(0) row(3))

设置 x 轴的标签:

tw bar 发明型专利 year1, barwidth(0.4) || ///
bar 发明型绿色专利_根据主分类号筛选 year1, barwidth(0.4) || ///
bar 实用型专利 year2, barwidth(0.4) || ///
bar 实用型绿色专利_根据主分类号筛选 year2, barwidth(0.4) || ///
line 总专利数量 year || ///
line 总绿色专利数量_根据主分类号筛选 year ||, ///
leg(order(1 "发明型专利" 2 "发明型绿色专利(根据主分类号筛选)" ///
3 "实用型专利" 4 "实用型绿色专利(根据主分类号筛选)" ///
5 "总专利数量" 6 "总绿色专利数量(根据主分类号筛选)") ///
pos(11) ring(0) row(3)) ///
xla(1992(1)2019, ang(90))

设置标题、副标题、caption:

tw bar 发明型专利 year1, barwidth(0.4) || ///
bar 发明型绿色专利_根据主分类号筛选 year1, barwidth(0.4) || ///
bar 实用型专利 year2, barwidth(0.4) || ///
bar 实用型绿色专利_根据主分类号筛选 year2, barwidth(0.4) || ///
line 总专利数量 year || ///
line 总绿色专利数量_根据主分类号筛选 year ||, ///
leg(order(1 "发明型专利" 2 "发明型绿色专利(根据主分类号筛选)" ///
3 "实用型专利" 4 "实用型绿色专利(根据主分类号筛选)" ///
5 "总专利数量" 6 "总绿色专利数量(根据主分类号筛选)") ///
pos(11) ring(0) row(3)) ///
xla(1992(1)2019, ang(90)) ///
ti("1992~2019 年上市公司与绿色专利数据匹配情况(根据主分类号筛选)", size(*0.8)) ///
subti("由于专利数据库后面年份的不是很全,2017 年及之后年份的数据需要谨慎使用。", size(*0.8)) ///
caption("数据来源:上市公司数据来源于和讯网,专利数据来源于国家知识产权局,绿色专利分类标准来自 WIPO。")

这样就得到了推文开头的图:

另外一幅图代码类似,把主分类号替换成分类号即可:

tw bar 发明型专利 year1, barwidth(0.4) || ///
bar 发明型绿色专利_根据分类号筛选 year1, barwidth(0.4) || ///
bar 实用型专利 year2, barwidth(0.4) || ///
bar 实用型绿色专利_根据分类号筛选 year2, barwidth(0.4) || ///
line 总专利数量 year || ///
line 总绿色专利数量_根据分类号筛选 year ||, ///
leg(order(1 "发明型专利" 2 "发明型绿色专利(根据分类号筛选)" ///
3 "实用型专利" 4 "实用型绿色专利(根据分类号筛选)" ///
5 "总专利数量" 6 "总绿色专利数量(根据分类号筛选)") ///
pos(11) ring(0) row(3)) ///
xla(1992(1)2019, ang(90)) ///
ti("1992~2019 年上市公司与绿色专利数据匹配情况(根据分类号筛选)", size(*0.8)) ///
subti("由于专利数据库后面年份的不是很全,2017 年及之后年份的数据需要谨慎使用。", size(*0.8)) ///
caption("数据来源:上市公司数据来源于和讯网,专利数据来源于国家知识产权局,绿色专利分类标准来自 WIPO。")

另外 rstata_scheme 主题包里面还有另外一个 darkrstata 主题,绘制出来的图表是这样的:

点击这里跳转到 RStata 短书平台获取附件:Stata:如何绘制并列柱状图 + 线图?以上市公司绿色专利数量数据为例

评论