设置颜色和冲积地块中的标题

时间:2017-03-31 00:20:48

标签: r sankey-diagram

我有一个简单的data.frame,使用冲积包制作成一个简单的冲积地图。我该如何编辑情节?我的问题按重要性排列:

  1. 更改颜色方案,以便来自相同的颜色 “Admitted To”单位颜色相同。
  2. 添加标题
  3. 保存此图,以便稍后我可以将其绘制成带有几个ggplots的网格
  4. 警告:ggalluvial可能更容易,但不幸的是我无法在工作中安装它,因此解决方案需要使用base r,ggplot或冲积包。

    library(alluvial)
    df <- structure(list(Admitted.To = 
                 c("UnitC", "UnitC", "UnitC", "UnitC", "UnitD", "UnitD", 
                   "UnitD", "UnitD", "UnitE", "UnitE", "UnitE", "UnitF", 
                   "UnitB", "UnitB", "UnitB", "UnitB", "UnitB", "UnitG", 
                   "UnitH", "UnitA", "UnitA", "UnitA", "UnitA", "UnitA"), 
               Discharged.From = c("UnitC", "UnitD", "UnitE", "UnitA", 
                                   "UnitC", "UnitD", "UnitE", "UnitA", 
                                   "UnitD", "UnitE", "UnitA", "UnitF", 
                                   "UnitD", "UnitI", "UnitE", "UnitB", 
                                   "UnitA", "UnitG", "UnitH", "UnitC", 
                                   "UnitD", "UnitI", "UnitE", "UnitA"), 
               n = c(136, 2, 1, 2, 1, 162, 2, 3, 1, 213, 1, 3, 5, 1, 7, 
                     22, 23, 1, 32, 10, 9, 39, 9, 607)), 
          .Names = c("Admitted.To", "Discharged.From", "n"), 
          row.names = c(NA, -24L),
          class = c("tbl_df", "tbl", "data.frame"))
    

    我一直在使用下面的颜色代码,直到我弄清楚如何将颜色映射到“Admitted To”组

    set.seed(8) # for nice colors
    cols <- hsv(h = sample(1:8/10), s = sample(3:8)/8, v = sample(3:8)/8) 
    

    我的冲积地图代码:

    alluvial(df[,1:2], 
         freq = 8,
         blocks = T,
         col = cols)
    

    我尝试将title = "SampleTitleHere"添加到我的代码中,但它只是绘制了另一列。我没有找到关于这个包的很多文档。

1 个答案:

答案 0 :(得分:4)

感谢您使用冲积包。逐一解决您的问题:

  

1更改颜色方案,使来自相同“Admitted.To”单位的流颜色相同。

E.g。像那样


pal <- RColorBrewer::brewer.pal(8, "Set1") # colors to use
alluvial(
  f[,1:2], 
  freq = 8,
  blocks = T,
  col = k[ match(f$Admitted.To, unique(f$Admitted.To))    ]
)
  
      
  1. 添加标题
  2.   

也许我们会添加titlemain参数。同时使用mtext()在顶部添加“边距文字”


pal <- RColorBrewer::brewer.pal(8, "Set1")
alluvial(
  f[,1:2], 
  freq = 8,
  blocks = T,
  col = k[ match(f$Admitted.To, unique(f$Admitted.To))    ]
)
mtext("A title", 3, line=3, font=2)

如果您的标题跨越多行或者您希望在标题和图表之间有更大的边距或空格,您可以(a)通过使用您传递的向量的更大数量的第三个元素来使边距更大到mar论证; (b)混淆linemtext()的争论,以调整标题应该出现的距离。

  
      
  1. 保存此图,以便稍后我可以将其绘制成带有几个ggplots的网格
  2.   

我没有快速回答。如果您需要使用ggalluvial将其与其他基于ggplot的数字混合使用将是更好的选择。请参阅下文,了解如何使其发挥作用。

  警告:ggalluvial可能更容易,但不幸的是我无法在工作中安装它,因此解决方案需要使用base r,ggplot或冲积包。

即使您不是系统管理员,也应该能够安装和使用任何R软件包(例如ggalluvial)。您只需要在有权写入文件的地方安装它们。这甚至可以是您保存分析的文件夹。参见例如https://csg.sph.umich.edu/docs/R/localpackages.htmlhttp://www.stat.osu.edu/computer-support/mathstatistics-packages/installing-r-libraries-locally-your-home-directory或Google代表“R用户库树”。