此问题基于this prior question.
请考虑以下情节:
Domain = c("A","B","C","D","E","F","G","A","G")
Area = c("State","State","National","National")
race = c("White","White","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()
现在,我们想通过连接相同域和面积的每对点将其转换为哑铃图。显而易见的代码如下:
df2 <- pivot_wider(df,names_from = race,values_from = pct_agreement)
ggplot(df) +
geom_point(
aes(
x = Domain,position = position_dodge(width = 1)
) +
geom_segment(
data = df2,aes(
x = Domain,xend = Domain,y = White,yend = Black,color = Area
),position = position_dodge(width = 1)
) +
coord_flip()
由reprex package(v0.3.0)于2019-11-08创建
显然,那是行不通的,因为position_dodge()
并没有躲过xend
的审美观。我认为这可能是应该修复的ggplot2中的错误。但是,与此同时,制作此图的最简单方法是什么?我可以想到各种方法来做,但是它们似乎都很麻烦。我想念什么吗?