我有以下数据显示了不同领域的白人与黑人之间的百分比一致性。我想创建一个分组的哑铃图,其中“国家”值和“州”值彼此相邻,以便于比较。

Domain = c("A", "B", "C", "D", "E", "F", "G",
"A", "B", "C", "D", "E", "F", "G", "A", "B", "C", "D", "E", "F",
"G", "A", "B", "C", "D", "E", "F", "G")

Area = c("State", "State",
"State", "State", "State", "State", "State", "National", "National",
"National", "National", "National", "National", "National", "State",
"State", "State", "State", "State", "State", "State", "National",
"National", "National", "National", "National", "National", "National"

race = c("White", "White", "White", "White", "White", "White",
"White", "White", "White", "White", "White", "White", "White",
"White", "Black", "Black", "Black", "Black", "Black", "Black",
"Black", "Black", "Black", "Black", "Black", "Black", "Black",
"Black")

pct_agreement = c(0.557610213756561, 0.735042750835419,
0.567375898361206, 0.633762538433075, 0.64091557264328, 0.750356614589691,
0.564539015293121, 0.651861846446991, 0.697574973106384, 0.653521358966827,
0.713940441608429, 0.680985689163208, 0.751584351062775, 0.642535984516144,
0.488484561443329, 0.581625580787659, 0.456939995288849, 0.580652594566345,
0.630399644374847, 0.711643815040588, 0.347775995731354, 0.627996683120728,
0.668737232685089, 0.610245823860168, 0.690373718738556, 0.705771028995514,
0.738830924034119, 0.550933301448822)


r - 当我添加形状时,分组哑铃图变得不灵通-LMLPHP

当我的代码如下时,我得到一个图形,其中所有点都很好地对齐:

df <- data.frame(Domain, Area, race, pct_agreement)

ggplot(df) +
  geom_point(aes(x=Domain, y=pct_agreement, color=Area),
             position=position_dodge(width=1)) +
  coord_flip()


r - 当我添加形状时,分组哑铃图变得不灵通-LMLPHP

但是,当我尝试根据受访者是黑人还是白人而使形状有所不同时,一切突然看起来就很奇怪。这是一个错误吗?有什么办法可以解决它或解决它?

我也不确定如何在“哑铃”的两端之间添加一条线-我尝试使用geom_line(aes(group = Area)),但是导致所有哑铃都被连接了。

ggplot(df) +
  geom_point(aes(x=Domain, y=pct_agreement, color=Area, shape=race),
             position=position_dodge(width=1)) +
  coord_flip()


r - 当我添加形状时,分组哑铃图变得不灵通-LMLPHP

注意:我浏览了本网站上的很多帖子,以寻找答案,并且许多建议使用构面。这对我不起作用,因为我的老板希望在一张图表上全部显示。

最佳答案

闪避是基于组发生的,对于两个域,每个类别都有两个类别变量(raceArea),因此将点闪避到四个不同的位置。您可以通过显式设置组的美观程度来避免这种情况。

首先是数据:



Domain = c("A", "B", "C", "D", "E", "F", "G",
           "A", "B", "C", "D", "E", "F", "G", "A", "B", "C", "D", "E", "F",
           "G", "A", "B", "C", "D", "E", "F", "G")

Area = c("State", "State",
         "State", "State", "State", "State", "State", "National", "National",
         "National", "National", "National", "National", "National", "State",
         "State", "State", "State", "State", "State", "State", "National",
         "National", "National", "National", "National", "National", "National")

race = c("White", "White", "White", "White", "White", "White",
         "White", "White", "White", "White", "White", "White", "White",
         "White", "Black", "Black", "Black", "Black", "Black", "Black",
         "Black", "Black", "Black", "Black", "Black", "Black", "Black",
         "Black")

pct_agreement = c(0.557610213756561, 0.735042750835419,
                  0.567375898361206, 0.633762538433075, 0.64091557264328, 0.750356614589691,
                  0.564539015293121, 0.651861846446991, 0.697574973106384, 0.653521358966827,
                  0.713940441608429, 0.680985689163208, 0.751584351062775, 0.642535984516144,
                  0.488484561443329, 0.581625580787659, 0.456939995288849, 0.580652594566345,
                  0.630399644374847, 0.711643815040588, 0.347775995731354, 0.627996683120728,
                  0.668737232685089, 0.610245823860168, 0.690373718738556, 0.705771028995514,
                  0.738830924034119, 0.550933301448822)

df <- data.frame(Domain, Area, race, pct_agreement)


现在情节:

library(tidyverse)

ggplot(df) +
  geom_point(
    aes(
      x=Domain, y=pct_agreement, color=Area, shape=race,
      group = Area
    ),
    position=position_dodge(width=1)
  ) +
  coord_flip()




reprex package(v0.3.0)创建于2019-11-08

用线连接点很难。我认为这值得一个单独的问题。我发布了一个here.

10-08 03:37