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

Graph 使用asyvars放置条形图颜色图例,graph,bar-chart,stata,Graph,Bar Chart,Stata,我很难将颜色图例放在一个简单的条形图中,我正试图在Stata中将其放在一起。我希望避免使用graph editor,并尝试从do文件中找出这一点 我正在使用blindschemes软件包中的plottig方案我希望图例放在图表的右侧,就像在R中的ggplot条形图中一样。 我使用的命令是 graph bar if wparties==1, over(issue_num) missing blabel(group) by(crisis) asyvars 其结果如下所示: 如果需要,我可以提供一

我很难将颜色图例放在一个简单的条形图中,我正试图在Stata中将其放在一起。我希望避免使用graph editor,并尝试从do文件中找出这一点

我正在使用
blindschemes
软件包中的
plottig
方案我希望图例放在图表的右侧,就像在R中的ggplot条形图中一样。

我使用的命令是

graph bar if wparties==1, over(issue_num) missing blabel(group) by(crisis) asyvars
其结果如下所示:


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

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

我的答案并不是你直接要求的,因为这种设计——尽管非常流行——在我看来,即使是认真的研究人员,在空间利用和可读性方面也非常糟糕和低效。使用传说——有人说是钥匙——充其量只是一种必要的邪恶。在这里,很少有人愿意或能够记住这个传说。明显的后果是双重的。首先,很多人会从原则上理解你的图表(它只是一个条形图),但不会涉及任何细节。第二,其他人会尝试参与其中,但不得不在图例和图表之间反复往返。随意涂色不会有多大帮助。换一个不同的位置对传奇没有多大帮助

这是一个包含自包含代码的假数据集,我的另一个建议是使用
tabplot
(Stata Journal)<最新状态中的代码>搜索选项卡绘图将指向

SJ-16-2 gr0066。发言状态:多个条形图 表格 (如果安装了帮助选项卡Plot)。N·J·考克斯 2016年第2季度SJ 16(2):491-510

2019年第二季度之前需要订阅或付费才能访问,但您可以从将显示的链接免费下载该程序。该帐户可以自由访问

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("") 

注:

  • 你的真实数据比这有更多的结构。在y轴上,自然有重新排序类别的余地

  • 如果你喜欢,你可以给这些条涂上不同的颜色

  • 我使用了
    scheme s1color
    ,但您显然可以使用自己喜欢的颜色

  • 你的九个类别的文本比我的要长,这就更需要把它们放在易读的位置上,也就是说用垂直轴水平放置。它们在水平轴上是不可读的,这可能就是为什么要使用图例的原因。幸运的是,没有冲突,因为自然或传统的时间顺序在任何情况下都是从左到右的。在其他问题中,哪个变量位于哪个轴上可能更难确定

  • 我还建议在游戏中加入变奏曲

    graph dot (asis) percent , over(crisis) over(issue) ///
    asyvars marker(1, ms(Oh)) marker(2, ms(X)) marker(3, ms(+)) legend(row(1)) 
    
    我这里没有展示。在那个图中有一个图例,但它更容易使用


    简而言之,我解决移动一个笨拙的传奇的方法是删除它

    您所需要做的就是提供一个具有相同结构的假数据集,或者用Stata提供的一个数据集进行说明。但很容易伪造具有类似复杂性的数据集。我在这里看到两个分类变量,一个有9个类别,没有明显的顺序,另一个有3个类别,有明确的时间顺序。绘制的是回答的百分比,大概是对一些问题的回答,例如什么是最重要的问题

    我的答案并不是你直接要求的,因为这种设计——尽管非常流行——在我看来,即使是认真的研究人员,在空间利用和可读性方面也非常糟糕和低效。使用传说——有人说是钥匙——充其量只是一种必要的邪恶。在这里,很少有人愿意或能够记住这个传说。明显的后果是双重的。首先,很多人会从原则上理解你的图表(它只是一个条形图),但不会涉及任何细节。第二,其他人会尝试参与其中,但不得不在图例和图表之间反复往返。随意涂色不会有多大帮助。换一个不同的位置对传奇没有多大帮助

    这是一个包含自包含代码的假数据集,我的另一个建议是使用
    tabplot
    (Stata Journal)<最新状态中的代码>搜索选项卡绘图将指向

    SJ-16-2 gr0066。发言状态:多个条形图 表格 (如果安装了帮助选项卡Plot)。N·J·考克斯 2016年第2季度SJ 16(2):491-510

    2019年第二季度之前需要订阅或付费才能访问,但您可以从将显示的链接免费下载该程序。该帐户可以自由访问

    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("") 
    

    注:

  • 你的真实数据比这有更多的结构。在y轴上,自然有重新排序类别的余地

  • 如果你喜欢,你可以给这些条涂上不同的颜色

  • 我使用了
    scheme s1color
    ,但您显然可以使用自己喜欢的颜色

  • 你的九个类别的文本比我的要长,这就更需要把它们放在易读的位置上,也就是说用垂直轴水平放置。它们在水平轴上是不可读的,这可能就是为什么要使用图例的原因。幸运的是,没有冲突,因为自然或传统的时间顺序在任何情况下都是从左到右的。在其他问题中,哪个变量位于哪个轴上可能更难确定

  • 我还建议在游戏中加入变奏曲

    graph dot (asis) percent , over(crisis) over(issue) ///
    asyvars marker(1, ms(Oh)) marker(2, ms(X)) marker(3, ms(+)) legend(row(1)) 
    
    我这里没有展示。在那张图中有一个传说,但它是真实的