我对 R 有点陌生 - 在尝试生成以下情节时遇到了一个非常奇怪的问题
worst_death <- df_clean %>%
group_by(event_cat) %>%
summarise(Deaths = sum(FATALITIES)
, Injuries = sum(INJURIES)) %>%
ggplot()+
geom_segment(aes(x=reorder(event_cat,Injuries),xend=reorder(event_cat,Injuries), y=Deaths, yend = Injuries, color="black")) +
geom_point(aes(x=reorder(event_cat,Injuries), y=Deaths,color="yellow", size=1 ))+
geom_point(aes(x=reorder(event_cat,Injuries), y=Injuries,color="white", size=1 ))+
coord_flip()+
theme_ipsum()+
theme(legend.position = "none",) +
xlab("Event Type") +
ylab("Human Impact")
worst_death
图表运行完美 - 除了颜色和美学选项(大小等)没有返回我指定的内容。
奇怪的是颜色是红蓝绿,而不是黄黑白。
有人知道为什么会发生这种情况吗?
谢谢
答案 0 :(得分:0)
如果没有您的数据,我无法对此进行测试,但以下内容应该对您有用:
worst_death <- df_clean %>%
group_by(event_cat) %>%
summarise(Deaths = sum(FATALITIES),
Injuries = sum(INJURIES)) %>%
ggplot(aes(x = reorder(event_cat,Injuries), y = Deaths)) +
geom_segment(aes(xend = reorder(event_cat,Injuries),
y = Deaths, yend = Injuries)) +
geom_point(color = "yellow", size = 1) +
geom_point(aes(y = Injuries), color = "white", size = 1) +
coord_flip() +
theme_ipsum() +
theme(legend.position = "none") +
xlab("Event Type") +
ylab("Human Impact")
worst_death
有几点需要注意:
aes
时,ggplot 会将其读取为将几何图形分配给标记颜色 分组 的单个因子级别,并且不会将其解释为文字颜色分配。如果您的情节中有一个图例,该键将在红色和蓝色关键点上显示标签“白色”和“黄色”。如果您希望将这些标签解释为文字颜色,您可以将 + scale_color_identity()
添加到您的图中,或者更常见的是,只需将 color =
outside 带入 aes
,它被解释为实际的颜色分配。如果您不想要图例,这是最简单的方法。size =
带出 aes
调用。 ggplot
将数字 1 映射到其默认大小比例,而不是字面上使点大小为 1。geom_segment
默认为黑色,因此不需要指定颜色。ggplot
调用中包含默认的 x 和 y 美学,则可以节省一些输入(从而降低错误风险并使维护更容易)。这些由任何后续 geom 继承,但可以根据需要覆盖。dput(df_clean)
的输出复制并粘贴到您的问题中。