如何在ggplot中包装图例文本?

2024-04-18

这是我的数据的头部:

structure(list(aasta = c(2012, 2013, 2014, 2015, 2016, 2017, 
2018, 2019, 2020, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 
2020), tunnus1 = c("Ennetähtaegselt vanaduspensionile minejate arv", 
"Ennetähtaegselt vanaduspensionile minejate arv", "Ennetähtaegselt vanaduspensionile minejate arv", 
"Ennetähtaegselt vanaduspensionile minejate arv", "Ennetähtaegselt vanaduspensionile minejate arv", 
"Ennetähtaegselt vanaduspensionile minejate arv", "Ennetähtaegselt vanaduspensionile minejate arv", 
"Ennetähtaegselt vanaduspensionile minejate arv", "Ennetähtaegselt vanaduspensionile minejate arv", 
"Vanaduspensionile minejate arv", "Vanaduspensionile minejate arv", 
"Vanaduspensionile minejate arv", "Vanaduspensionile minejate arv", 
"Vanaduspensionile minejate arv", "Vanaduspensionile minejate arv", 
"Vanaduspensionile minejate arv", "Vanaduspensionile minejate arv", 
"Vanaduspensionile minejate arv"), vaartus1 = c(1022, 1173, 1129, 
1083, 1294, 1026, 862, 751, 764, 6529, 7683, 6797, 6892, 8106, 
6922, 6502, 6098, 5817), tunnus2 = c("Ennetähtaegselt vanaduspensionile minejate osakaal kõigist eelmisel aastal  VTI-dest", 
"Ennetähtaegselt vanaduspensionile minejate osakaal kõigist eelmisel aastal  VTI-dest", 
"Ennetähtaegselt vanaduspensionile minejate osakaal kõigist eelmisel aastal  VTI-dest", 
"Ennetähtaegselt vanaduspensionile minejate osakaal kõigist eelmisel aastal  VTI-dest", 
"Ennetähtaegselt vanaduspensionile minejate osakaal kõigist eelmisel aastal  VTI-dest", 
"Ennetähtaegselt vanaduspensionile minejate osakaal kõigist eelmisel aastal  VTI-dest", 
"Ennetähtaegselt vanaduspensionile minejate osakaal kõigist eelmisel aastal  VTI-dest", 
"Ennetähtaegselt vanaduspensionile minejate osakaal kõigist eelmisel aastal  VTI-dest", 
"Ennetähtaegselt vanaduspensionile minejate osakaal kõigist eelmisel aastal  VTI-dest", 
"Vanaduspensionile minejate osakaal kõigist eelmisel aastal VTI-dest", 
"Vanaduspensionile minejate osakaal kõigist eelmisel aastal VTI-dest", 
"Vanaduspensionile minejate osakaal kõigist eelmisel aastal VTI-dest", 
"Vanaduspensionile minejate osakaal kõigist eelmisel aastal VTI-dest", 
"Vanaduspensionile minejate osakaal kõigist eelmisel aastal VTI-dest", 
"Vanaduspensionile minejate osakaal kõigist eelmisel aastal VTI-dest", 
"Vanaduspensionile minejate osakaal kõigist eelmisel aastal VTI-dest", 
"Vanaduspensionile minejate osakaal kõigist eelmisel aastal VTI-dest", 
"Vanaduspensionile minejate osakaal kõigist eelmisel aastal VTI-dest"
), vaartus2 = c(0.01, 0.011, 0.01, 0.01, 0.012, 0.009, 0.008, 
0.007, 0.007, 0.066, 0.073, 0.063, 0.064, 0.074, 0.062, 0.059, 
0.057, 0.054)), row.names = c(NA, -18L), class = c("tbl_df", 
"tbl", "data.frame"))

我的颜色:

cen_col_palette <- function(){
  c("#1C5679",
    "#808C5C",
    "#BF2124",
    "#D88F2E",
    "#5F4B3B",
    "#BBB592",
    "#87240E",
    "#7A989A",
    "#204035",
    "#F4CE4B",
    "#805730",
    "#D4613E",
    "#212F3D",
    "#145A32",
    "#808080",
    "#E74C3C")
}
cen_cols <- cen_col_palette()

这是我的情节:

ggplot(ennet1, aes(y = vaartus2, x = aasta, group=tunnus2, label=scales::percent(vaartus2,decimal.mark=',',accuracy = 0.1)))+
  geom_line(aes(color=tunnus2, linetype=tunnus2))+
  geom_point(aes(color=tunnus2))+
  geom_label(vjust = -0.6, label.size = 0, label.padding = unit(0.3, "lines"), size = 3.5)+
  scale_x_continuous(breaks = seq(2012,2020,by=2))+
  scale_y_continuous(labels = scales::percent_format(decimal.mark = ',',accuracy=1), expand = expansion(mult = c(0, 0.5)))+
  cen_theme()+
  theme(
    strip.background =element_blank(),
    strip.text =element_text(size=11),
    axis.title.y = element_text(angle = 90), 
    axis.text.x = element_text(size = 11), 
    axis.text.y = element_text(size = 11), 
    legend.text = element_text(size = 11))+
  scale_fill_manual(values = cen_cols)+
  scale_color_manual(values = cen_cols)+
  theme(legend.title = element_blank())+
  theme(plot.title = element_text(size = 11, hjust=0.5))+
  theme(axis.title.x = element_blank())+
  theme(axis.title.y = element_blank())+
  theme(legend.key.height=unit(2, "cm"))+
  theme(legend.position="top", legend.box="vertical", legend.margin=margin())

这就是图表现在的样子:

如您所见,图例标题太长,我想将它们换行。我尝试了库(stringr)并添加了str_wrap,但实际上我不知道将它放在哪里并且它不起作用。

先感谢您!


您可以使用以下方式换行文本guide_legend有两行并改变size中的文本legend.text。您可以使用此代码:

library(scales)
library(tidyverse)
ggplot(ennet1, aes(y = vaartus2, x = aasta, group=tunnus2, label=scales::percent(vaartus2,decimal.mark=',',accuracy = 0.1)))+
  geom_line(aes(color=tunnus2, linetype=tunnus2))+
  geom_point(aes(color=tunnus2))+
  geom_label(vjust = -0.6, label.size = 0, label.padding = unit(0.3, "lines"), size = 3.5)+
  scale_x_continuous(breaks = seq(2012,2020,by=2))+
  scale_y_continuous(labels = scales::percent_format(decimal.mark = ',',accuracy=1), expand = expansion(mult = c(0, 0.5)))+
  #cen_theme()+
  theme(
    strip.background =element_blank(),
    strip.text =element_text(size=11),
    axis.title.y = element_text(angle = 90), 
    axis.text.x = element_text(size = 11), 
    axis.text.y = element_text(size = 11), 
    legend.text = element_text(size = 11))+
  #scale_fill_manual(values = cen_cols)+
  #scale_color_manual(values = cen_cols)+
  theme(legend.title = element_blank())+
  theme(plot.title = element_text(size = 11, hjust=0.5))+
  theme(axis.title.x = element_blank())+
  theme(axis.title.y = element_blank())+
  theme(legend.key.height=unit(2, "cm"))+
  theme(legend.position="top", legend.box="vertical", legend.margin=margin()) +
  theme(legend.text=element_text(size=8)) +
  guides(colour = guide_legend(nrow = 2))

Output:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在ggplot中包装图例文本? 的相关文章

  • 扩展数据框以使其具有与原始行中两列的范围一样多的行[重复]

    这个问题在这里已经有答案了 我有一个数据框如下 structure list symbol c u n v i a start c 9L 6L 10L 8L 7L end c 14L 15L 12L 13L 11L Names c symb
  • R 改变构面的顺序

    我正在尝试将方面的顺序从 BA SLG 更改为 SLG BA 我发现了与此类似的问题 但我认为我的解决方案可能不起作用 因为我已经在Excel中汇总了数据 因此 我的数据框可能会有所不同 无论如何 我尝试实现这个但无济于事 df2 lt f
  • ggplot 中的 ggsave() for python 不保存

    我已将 ggplot 导入到 python 中 并运行以下脚本 希望 ggsave 实际上将我的绘图保存在某处 但它似乎实际上并未将任何内容写入 png 文件以供以后使用 当我在解释器中将其作为 p 返回时 该图就会返回 但我必须手动保存它
  • 如何像在facet_grid中一样在facet_wrap中定位条带标签

    我想在使用时删除多余的条带标签facet wrap 并用两个变量进行分面 并且都是自由尺度的 例如 这个facet wrap下图的版本 library ggplot2 dt lt txhousing txhousing year in 20
  • 更改 R 中 ggplot geom_polygon 的颜色方案

    我正在使用地图库和 ggplot 的 geom polygon 创建地图 我只是想将默认的蓝色 红色 紫色配色方案更改为其他颜色 我对 ggplot 非常陌生 所以如果我没有使用正确的数据类型 请原谅 我使用的数据如下所示 gt head
  • R 数据结构的运算效率

    我想知道是否有任何关于操作效率的文档R 特别是那些与数据操作相关的 例如 我认为向数据框添加列是有效的 因为我猜您只是向链接列表添加一个元素 我想添加行会更慢 因为向量保存在数组中C level你必须分配一个新的长度数组n 1并将所有元素复
  • 条件和分组 mutate dplyr

    假设我有以下每个抽屉库存增加的数据 gt socks year drawer nbr sock total 1990 1 2 1991 1 2 1990 2 3 1991 2 4 1990 3 2 1991 3 1 我想要一个二进制变量来标
  • 安装 2.15 后 ggplot2 中的 alpha 通道不起作用

    更新到 R 2 15 后 ggplot 中的 alpha 通道似乎不再起作用 plot rnorm 100 rnorm 100 bg cc000055 pch 21 工作得很好但是 qplot rnorm 100 rnorm 100 col
  • R 中的数据框操作 - 将单元格向左移动并删除 NA

    我有一个数据框 其列由随机分布的值和 NA 组成 如下所示 a lt c S E NA S NA b lt c A NA M G K c lt c I NA NA NA L meh lt dataframe a b c 1 2 3 4 5
  • 使用“assign()”为列表项分配值

    首先了解一些背景 我写了一个中缀函数 本质上取代了这个习惯用法 x length x 1 lt y 或者简单地说x lt append x y 对于向量 这里是 lt function x y xcall lt substitute x x
  • 如何在R中分离两个图?

    每当我运行这段代码时 第一个图就会简单地覆盖前一个图 R中有没有办法分开得到两个图 plot pc title main abc xlab xx ylab yy plot pcs title main sdf xlab sdf ylab x
  • 更改绘图区域背景颜色

    我想使用我们公司的颜色在 R 中制作一个图表 这意味着所有图表的背景应为浅蓝色 但绘图区域应为白色 我正在寻找答案 发现绘制一个矩形就可以完成这项工作 几乎 然而 绘图区域现在是白色的 并且图形不再可见 这可能吗 getSymbols SP
  • 如何在R中实现countifs函数(excel)

    我有一个包含 100000 行数据的数据集 我尝试做一些countifExcel 中的操作 但速度慢得惊人 所以我想知道R中是否可以完成这种操作 基本上 我想根据多个条件进行计数 例如 我可以指望职业和性别 row sex occupati
  • 如何使用 dplyr 管道将额外参数传递给 purrr::map

    我有以下数据框和功能 param df lt data frame x 1 3 0 1 y 3 1 0 2 param df gt x y gt 1 1 1 2 8 gt 2 2 1 1 8 gt 3 3 1 0 8 my function
  • R 颜色 - 许多独特的颜色仍然很漂亮

    我很好奇你是否有一些关于 R 中颜色酿造的技巧 对于许多独特的颜色 在某种程度上图形仍然好看 我需要相当数量的独特颜色 至少 24 种 可能需要更多 50 种 用于堆叠区域图 所以不是热图 渐变颜色不起作用 我发现了 viridis 它的调
  • rpart 决策树中的 rel 误差和 x 误差有什么区别? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有一个来自 UCI 机器学习数据库的纯分类数据框https archive ics uci edu ml datasets Diabet
  • 如何在 foreach( ... , .packages="pkg") %dopar% 中指定 R 包的位置

    我的 包 安装在其他地方 我如何告诉 foreach 在哪里可以找到该包 foreach i 1 2 packages pkg dopar 这给我错误消息 worker initialization failed there is no p
  • 如何使用合并或替换来更新 R 中具有多列的表

    我想做一些与这个问题非常相似的事情 如何使用 merge 更新 R 中的表 https stackoverflow com questions 3190118 how to use merge to update a table in r
  • 通过消除嵌套的 for 循环来改进此代码

    R 包corrplot除其他内容外 还包含这个漂亮的功能 cor mtest lt function mat conf level 0 95 mat lt as matrix mat n lt ncol mat p mat lt lowCI
  • Linux 中的 R 有哪些可用的 IDE? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 Linux 中的 R 有哪些好的 IDE 我尝试过 Rcmdr 和 Eclipse 但似乎都不具有与 Windows 中的 Tinn R

随机推荐