标签太长,无法放入条形区域

活着

我使用 geom_text 在条形区域内放置一些文本,但我发现有时文本会超出条形区域,见下文。我想让文本以 substring = original_text[i:] 的形式成为原始文本的子字符串,其中自动选择 i 以便子字符串可以放入条形区域。例如:如果“ABCDEFGHIJKIFG”太长而无法放入条形区域,则条形内的文本将为所有条形显示“JKIFG”。图形图像

启动数据帧

ordering <- c(1,2,1,2)
year <- c(2000,2000,2001,2001)
value <- c(1,10,2,10)
label <- c('ABCDEFGHIJKIFG','ABCDEFGHIJKIFG','ABCDEFGHIJKIFG','ABCDEFGHIJKIFG')
df <- data.frame("ordering" = ordering, "year" = year,'value' = value,'label' = label)

绘图图

library(ggstance)
library(ggplot2)
library(gganimate)

ggplot(df, aes(y = ordering, x = value)) +
  geom_barh(stat = "identity") +
  geom_text(aes(x = 0, label = paste(label, " ")), vjust = 0.2, hjust = 0,color='red') +
  transition_states(year, transition_length = 2, state_length = 0) +
  view_follow(fixed_y = TRUE)
马吕斯

这是我想到的一些技巧:如果您将绘图背景设置为固定颜色,则可以在文本顶部绘制一个条以将其覆盖。它并不完美,但确实可以防止文本显示在栏外:

max_val = max(df$value)
ggplot(df, aes(y = ordering, x = value)) +
    geom_barh(stat = "identity") +
    geom_text(aes(x = 0, label = label), vjust = 0.2, hjust = 0,color='red') +
    geom_rect(aes(xmin = value, xmax=max_val, ymin = ordering - 0.2, ymax = ordering + 0.2),
              fill = "#aaaaaa") +
    transition_states(year, transition_length = 2, state_length = 0) +
    view_follow(fixed_y = TRUE) +
    theme(panel.background = element_rect(fill = "#aaaaaa"),
          panel.grid = element_blank())

隐藏文字


编辑:经过更多思考,我想出了一个更接近您的原始意图的版本,将标签贴在栏的右侧,并使标签在左侧消失:

ggplot(df, aes(y = ordering, x = value)) +
    geom_barh(stat = "identity") +
    geom_text(aes(x = value, label = label), vjust = 0.2, hjust = 1, color='red') +
    geom_rect(aes(xmin = -2, xmax=0, ymin = ordering - 0.2, ymax = ordering + 0.2),
              fill = "grey92") +
    transition_states(year, transition_length = 2, state_length = 0) +
    # Manually setting limits, not ideal
    coord_cartesian(xlim = c(0, 10)) +
    theme(panel.background = element_rect(fill = "grey92"))

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

NVD3水平条形图标签太长

来自分类Dev

无法使用Jvectormap渲染区域标签

来自分类Dev

R中的条形图标签:在绘图区域下方添加水平线

来自分类Dev

无法为堆叠条形图设置标签

来自分类Dev

d3.js条形图排序:无法确定如何对x轴标签和条形进行排序

来自分类Dev

文件路径太长,无法删除

来自分类Dev

文件路径太长,无法删除

来自分类Dev

R格子条形图中的条形标签

来自分类Dev

D3图表工具:无法在条形图中的列上方显示标签

来自分类Dev

无法更改列宽或在特定日期的条形图中添加单独的数据标签

来自分类Dev

将内容放入文本区域

来自分类Dev

MATLAB条形图中的空白区域

来自分类Dev

更改条形的颜色使模糊区域变为黑白

来自分类Dev

快速将数组放入标签

来自分类Dev

将儿童放入包含标签

来自分类Dev

无法放入空列表

来自分类Dev

R在标签区域中绘图

来自分类Dev

拒绝和接受区域的标签

来自分类Dev

悬停时的x区域标签

来自分类Dev

无法打开流:文件名太长

来自分类Dev

Spring saml:密钥太长,无法解包:invalidkeyexception

来自分类Dev

Memcached花费的时间太长,无法回应

来自分类Dev

代码行太长,无法让python解释?

来自分类Dev

Spring saml:密钥太长,无法解包:invalidkeyexception

来自分类Dev

Swift:collectionView花费的时间太长,无法显示

来自分类Dev

由于JavaScript太长,页面无法加载

来自分类Dev

文字区域无法运作

来自分类Dev

使用Proc sgplot的条形图中每个条形的不同标签

来自分类Dev

如何使Excel在条形图中的每个条形上贴标签?