使用asyvars放置条形图颜色图例

时间:2017-04-04 09:11:02

标签: graph bar-chart stata

我无法将颜色图例放在一个简单的条形图中,我试图将它放在Stata中。我想避免使用图形编辑器并尝试从do文件中解决这个问题。

我正在使用function MyCtrl2($scope, $timeout) { $timeout(function(){ $scope.value = $scope.valX + $scope.valY; }, 100 * $scope.count); } 包中的plottig方案。 我希望图例位于图表的右侧,因为它位于R的ggplot类型的条形图中。

我使用的命令是

blindschemes

导致以下情节:

enter image description here

如果需要,我可以提供样本数据集,但涉及机密性问题。

1 个答案:

答案 0 :(得分:2)

您需要做的就是提供具有相同结构的虚假数据集,或使用Stata提供的数据集之一进行说明。但是很容易伪造具有类似复杂性的数据集。我在这里看到两个分类变量,一个有9个类别,没有明显的顺序,另一个有3个类别和明确的时间顺序。正在绘制的是响应的百分比,可能是某些问题,例如最重要的问题。

我的答案不是你直接要求的,因为这个设计 - 尽管很受欢迎 - 在我看来,即使是严肃的研究人员,在使用空间和可读性方面显然也很差。使用传奇 - 有人说是关键 - 充其量只是一种必要的邪恶。在这里,很少有人想要或能够记住这个传奇。明显的后果是双重的。首先,很多人原则上会理解你的图表(它只是一个条形图),但不会详细介绍它。其次,其他人会尝试与之互动,但不得不在传奇和图表之间反复来回。任意着色都无济于事。传奇的不同位置无济于事。

以下是自包含代码中的假数据集以及我的替代建议,使用tabplot Stata Journal )。最新的Stata中的search tabplot将指向

  

SJ-16-2 gr0066。 。 。 。 。 。说Stata:多个条形图   表格       (如果安装了帮助tabplot)。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 N. J.考克斯       Q2 / 16 SJ 16(2):491--510

provides multiple bar charts in table form representing
contingency tables for one, two, or three categorical variables

需要订阅或支付访问权限,直到2019年第二季度,但您可以从将要显示的链接免费下载该程序。帐户here可以免费访问。

clear 
set obs 27 
set seed 2803 
egen issue = seq(), to(9) 
egen crisis = seq(), to(3) block(9) 
label def crisis 1 "first crisis" 2 "second crisis" 3 "third crisis" 
label val crisis crisis 
label def issue 1 Stark 2   Targaryen 3 Lannister 4 Baratheon 5 Arryn ///
6   Greyjoy 7   Martell 8   Tully 9 Tyrell
label val issue issue 
gen percent = runiform()^2 
egen total = total(percent), by(crisis) 
replace percent = 100 * percent/total

tabplot issue crisis [iw=percent], horizontal ///
showval(format(%2.1f) mlabsize(vsmall) offset(0.25)) ///
ytitle("") xtitle("") 

enter image description here

注意:

  1. 您的真实数据比此结构更多。自然可以在 y 轴上重新排序类别。

  2. 如果您愿意,可以使用不同的颜色。

  3. 我使用scheme s1color,但您可以清楚地看到自己喜欢的内容。

  4. 您的九个类别的文本比我的更长,更有理由将它们放在可读的位置,这意味着水平方向是垂直轴。它们在水平轴上是不可读的,这可能就是你使用传奇的原因。幸运的是,没有任何冲突,因为在任何情况下自然或传统的时间顺序都是正确的。在其他问题中,哪个变量取决于哪个轴可能难以决定。

  5. 我还建议玩

    的变体
    graph dot (asis) percent , over(crisis) over(issue) ///
    asyvars marker(1, ms(Oh)) marker(2, ms(X)) marker(3, ms(+)) legend(row(1)) 
    

    我不在这里展示。在该图中有一个图例,但它更容易使用。

    简而言之,我解决移动尴尬传奇问题的方法是删除它。