R

时间:2018-06-06 12:43:20

标签: r ggplot2 label legend geom-text

在过去的几个小时里,我试图了解围绕 ggalluvial 的整个设计/主题/标签概念,但我失败了。 几分钟之内我就能够生成我想要的那种图形(感谢ggalluvial包),但我无法想出如何生成我想要的正确标签/主题。

这是我目前所处的位置: Almost Done!

这是我最初的地方: white labels

为了让您了解我的位置,这是一个可重复的示例

Titanic Alluvial

我使用了以下代码:

library(ggalluvial)

ds <- as.data.frame(Titanic)

ggplot(ds,
   aes(weight = Freq, axis1 = Sex, axis2 = Class)) +
geom_alluvium(aes(fill = Sex), width = 1/12) +
geom_stratum(width = 1/4, fill = "black", color = "grey") + 
scale_x_continuous(breaks = 1:2, labels = c("Sex", "Class")) + 
scale_fill_manual(name = "", values=c("#A0A0A0", "#494949")) +              
ggtitle("Titanic Survival") +                            
theme_bw() +                                                          
geom_text(stat = "stratum", color="white",label.strata = TRUE,
        angle=c(90,90,0,0,0,0) , size=6, 
        nudge_y=c(1,2,3,4,5,0)) +
theme(legend.position = "bottom",
    title = element_text(size = 20),
    legend.text = element_text(size = 20),
    axis.text.y = element_blank(),
    axis.text.x = element_text(size=20))

我想改变的是:

  • 垂直翻转左侧的标签
    • 完成
  • 使右边的标签不重叠(泰坦尼克数据不可见)
    • 我试着轻推。但是将这些图例放在图表之外可能更有用,也许就像在轴上一样?
  • 删除y轴标签
    • 完成
  • 了解我可以更改每个文本元素大小的命令(标题,图例,标签,轴标签)
    • 圆顶

我很高兴能为此提供任何帮助。谢谢。

1 个答案:

答案 0 :(得分:1)

您可以尝试:

ggplot(ds,
       aes(weight = Freq, axis1 = Sex, axis2 = Class)) +
  geom_alluvium(aes(fill = Sex), width = 1/12) +
  geom_stratum(width = 1/16, fill = "black", color = "grey") + 
  scale_x_continuous(breaks = 1:2, labels = c("Sex", "Class")) + 
  scale_fill_manual(name = "", values=c("#A0A0A0", "#494949")) +              
  ggtitle("Titanic Survival") +                            
  theme_bw() +                                                          
  geom_text(stat = "stratum", color="red",label.strata = TRUE, angle=c(0,0,45,45,45,45),size=5) +              
  theme(legend.position = "bottom",
        title = element_text(size = 20),
        legend.text = element_text(size = 20),
        axis.text.y = element_blank(),
        axis.text.x = element_text(size=20))

enter image description here

  • 添加具有相同长度标签的向量,例如angle=c(0,0,45,45,45,45)
  • axis.text.y = element_blank()
  • 中添加theme()
  • 未决
  • 通过theme调整尺寸
    • 通过theme(),例如x轴标签
    • size=5
    • geom_text()的情节中的文字