graph - 带有字符串 x 轴的两个 y 轴条形图
问题描述
我正在使用 Stata 并试图制作一个具有两个独立 y 轴的条形图,其中 x 轴是不同的国家。
我有两个变量(tlsize
=总贷款和trblgdp
=总贷款/ GDP)。我的假设是使用此代码
twoway (bar tlsize country) (bar trblgdp country, yaxis(2))
这表示它不起作用,因为它country
是一个字符串变量,但这正是我想要的。
我也试过
graph bar (mean) trblgdp (mean) tlsize, over(country)
此代码有效,但我不确定如何添加第二个 y 轴。
解决方案
在没有数据示例的情况下,根据要求,必须提供一个愚蠢的玩具示例。
可能性包括:
正如错误消息已经告诉您的那样,x
twoway bar
轴需要一个数字变量,因此您需要使用 say 生成一个。但是您仍然需要处理图表以确保较大数量的条不会遮挡较小数量的条,例如通过偏移条。encode
graph bar
支持分类轴的字符串变量,但是您必须自己找出一些方法来在y轴上显示非常不同的数量。
在实践中,像您这样的数据的(垂直)条形图通常是有问题的:
一个。名称的默认字母顺序很少有用或可取。graph bar
通过允许对任何变量进行排序,使这更容易;否则需要一些工作才能找到更好的解决方案。
湾。您想要显示为轴标签的名称通常足够长以致造成混乱,尽管对此有解决方法(垂直或倾斜标签;缩写;小字体),但没有一个是有吸引力的。(使用图例通常也很糟糕。)在国家的情况下,还有另一种使用标准的两字母或三字母缩写的变通方法,这是相当广泛理解的。
由于这些和其他原因,水平条形图通常更可取。
multidot
来自 SSC 的尝试旨在解决所有这些问题,以针对一组类别在不同的尺度上显示两个或多个结果。如语法和图形示例所示,multidot
默认为点图,但可以重新转换为水平条形图。更多在这个线程。
clear
input str42 country y1 y2
"Afghanistan" 4 1000
"Belgium" 2 3000
"Cameroon" 1 2000
"Dominican Republic" 3 4000
end
label var y1 "something interesting"
label var y2 "another response"
ssc install multidot
multidot y1 y2, over(country) recast(bar) scheme(s1color) ytitle("")
推荐阅读
- typo3 - 我想在打字稿 CONTENT 或 renderObj 中覆盖并注明
- ios - 尝试将 Parse 中的数据填充到 CollectionView 时出现查询错误
- java - 在java netbeans中将一个组件放在另一个组件的面上
- protractor - 功能测试角度
- scala - 是否有编写隐藏其参与者系统实现的库的模式?
- android - ImageViews 的 ConstraintSet Animate 滑入
- regex - 如何编写匹配包含至少 4 个字母的字符串的正则表达式?
- android - 如何制作像ludo游戏一样的掷骰子动画?
- python - 矩阵向量乘法 Python3
- ios - Swift - 如何从 AppDelegate 引用子视图