标签: geom-text

geom_text如何根据需要在文本上定位文本?

我想调整条形图上的文字.

我试图调整hjust/vjust以显示我喜欢它但似乎它不能正常工作.

ggplot(data) + 
        geom_bar(aes(name, count, 
        fill = week), stat='identity', position = 'dodge') +
        geom_text(aes(name,count, 
        label=count),hjust=0.5, vjust=3, size=2,
        position = position_dodge(width = 1)) + 
        coord_flip()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

所以我希望数字位于每个条形图上,中间位于右边缘,因此它的可读性不会像最后一部分那样重叠.

r ggplot2 geom-bar geom-text

26
推荐指数
2
解决办法
4万
查看次数

将geom_text的默认"a"图例更改为标签字符串本身

此问题类似,我想更改图例中的默认"a",而不是完全删除它,我想用标签本身替换它.也就是说,图例的第一行应该有一个标有"se"的彩色图标,右边是全名"setosa".

iris$abbrev = substr( iris$Species, 1, 2 )

ggplot(data = iris, aes(x = Sepal.Length, y=Sepal.Width, shape =
Species, colour = Species)) +  geom_text(aes(label = abbrev))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

r legend ggplot2 geom-text

16
推荐指数
2
解决办法
384
查看次数

ggplot2:geom_text使用geom_bar中的plot和force/fit文本调整大小

这实际上是两个问题中的一个(不确定是否违反SO规则,但无论如何).

第一个问题是我如何强迫一个geom_text适合geom_bar?(动态根据绘制的值)

环顾四周,我发现的解决方案正在改变标签的大小.这当然有效,但不适用于所有情况.您可以更改特定绘图的大小以使文本适合条形,但是当数据更改时,您可能需要再次手动更改文本的大小.我现实生活中的问题是,我需要为不断变化的数据(每日)生成相同的图,所以我无法真正手动调整每个图的大小.

我尝试将标签的大小设置为数据的函数.它有点工作,不完美,但适用于许多情况.

但这是另一个问题,即使标签适合栏内,重新调整情节会使一切变得混乱.调查一下,我也在ggplot文档中找到了

标签确实有高度和宽度,但它们是物理单位,而不是数据单位.它们在该绘图上占用的空间量在数据单位中不是恒定的:当您调整绘图大小时,标签保持相同的大小,但轴的大小会发生变化.

这让我想到了第二个问题:是否可以更改此默认行为并让/使图表调整大小?

还让我提炼我的第一个问题.是否可以强制a geom_text适合a geom_bar,使用物理单位和数据单元之间的聪明关系动态设置文本的大小?

所以,为了遵循良好的做法,这是我可重复的例子:

set.seed(1234567)
data_gd <- data.frame(x = letters[1:5], 
                      y = runif(5, 100, 99999))

ggplot(data = data_gd,
       mapping = aes(x = x, y = y, fill = x)) +
    geom_bar(stat = "identity") +
    geom_text(mapping = aes(label = y, y = y/2))
Run Code Online (Sandbox Code Playgroud)

此代码生成此图:

在此输入图像描述

如果我只是简单地调整绘图大小," 标签保持相同的大小,但轴的大小会发生变化 ",从而使标签适合条形图(现在标签甚至可能太小).

在此输入图像描述

所以,这是我的第二个问题.标签调整大小并保持纵横比相对于条形图会很好.任何想法如何实现这一点或是否有可能?

好的,但回到如何在条形图中标注标签,最简单的解决方案是设置标签的大小.

ggplot(data = data_gd,
       mapping = aes(x = x, y = y, fill = x)) +
    geom_bar(stat = …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 geom-bar geom-text ggproto

15
推荐指数
2
解决办法
4285
查看次数

如何抖动/删除geom_text标签的重叠

数字

在图中,是否可以略微抖动状态缩写标签,以便它们不重叠?如果我使用check_overlap = TRUE,那么它会删除一些重叠的观察,我不希望这样.我也不想要geom_label_repel,因为它有标签伸出并穿过我所包含的45度线(我不想发生)

这是我的代码的相关部分供参考:

ggplot(df, aes(x = huff_margin_dem, y = margin16dem_state, label = abbrev)) +
  geom_abline(intercept = 0) +
  geom_text(fontface = "bold")
Run Code Online (Sandbox Code Playgroud)

r ggplot2 geom-text

15
推荐指数
2
解决办法
2万
查看次数

如何使用ggplot2将频率计数标签添加到条形图中的条形图?

我想将[r]因子变量的频率分布绘制为条形图,其中条形表示因子水平的频率计数.我使用ggplot2来做到这一点并没有问题.

我无法弄清楚的是如何将频率计数标签添加到条形图中的条形图上.我尝试过的语法如下:

ggplot(data, aes(x = factorvar)) + geom_bar(fill = "somecolor") + geom_text(aes(y = ???))
Run Code Online (Sandbox Code Playgroud)

我想我已经彻底搜索了stackoverflow和W.Chang的"R Graphics Cookbook",但我找不到任何具体的答案,我应该在上面的geom_text()的美学中与"y"匹配.我尝试了一些变体,如:(y = ..count ..),但它不起作用.

我将不胜感激任何帮助.谢谢...

r ggplot2 geom-bar geom-text

14
推荐指数
1
解决办法
5万
查看次数

将geom_text放置在geom_col堆积条形图中每个条形段的中间

我想将相应的值标签放在geom_col每个条形段中间的堆积条形图中.

但是,我天真的尝试失败了.

library(ggplot2) # Version: ggplot2 2.2

dta <- data.frame(group  = c("A","A","A",
                             "B","B","B"),
                  sector = c("x","y","z",
                             "x","y","z"),
                  value  = c(10,20,70,
                             30,20,50))

ggplot(data = dta) +
  geom_col(aes(x = group, y = value, fill = sector)) +
  geom_text(position="stack",
            aes(x = group, y = value, label = value)) 
Run Code Online (Sandbox Code Playgroud)

显然,设置y=value/2geom_text不帮助,无论是.此外,文本的顺序错误(反向).

任何(优雅的)想法如何解决这个问题?

r ggplot2 stacked-chart geom-text

10
推荐指数
1
解决办法
1万
查看次数

使用不同数据集时,文本相对于绘图区域的一致定位

我生成的几个地块,其中数据可能有不同xy范围。我希望在所有图中放置一个文本注释,相对于 plot area完全相同的位置。

第一标绘,其中I添加具有文本的实施例annotate和位置将其与xy在所述数据单元:

library(tidyverse)
ggplot(mpg) + 
  geom_point(aes(displ, hwy)) +
  annotate("text", x = 6, y = 20, label = "example watermark", size = 8) +
  ggsave(filename = "mpg.jpg", width = 10, height = 9, dpi = 60)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

然后根据另一个数据集创建第二个图,其中xy范围与第一个图不同。

在没有反复试验的情况下,将文本放置在相对于绘图区域完全相同的位置的最佳方法是什么?

ggplot(iris) + 
  geom_point(aes(Petal.Width, Petal.Length)) +
  # I don't want to hardcode x and y in annotate
  # annotate("text", x = 6, y = …
Run Code Online (Sandbox Code Playgroud)

text r ggplot2 geom-text

10
推荐指数
2
解决办法
560
查看次数

使用hjust替换geom_text位置

我正在绘制一个堆积条形图并用于geom_text插入每个堆栈的值.我面临的困难是一些堆栈非常小/窄,因此两个堆栈的文本相互重叠,因此不是很可读.我想以一种方式调整文本定位,例如文本位置在每个堆栈之间hjust == 1hjust == -1每个堆栈之间交替,以便不会有重叠(或任何其他方法将导致可读文本).

下面是目前我在做什么的例子(dputmydf提供如下):

library(ggplot2)

ggplot(mydf, aes(x=variable, y = value, fill = Category)) + 
  geom_bar(stat="identity") +
  geom_text(aes(label = value, y = pos-(value/2)), size = 3) 
Run Code Online (Sandbox Code Playgroud)

到目前为止我尝试的是:

使用position = position_dodge(width = 0.5)position = position_jitter(h =0.5, w = 0.5),但没有造成什么,我要怎样做.

我的第一个想法是定义hjust = c(1,-1)希望它将被回收并且文本将在它们之间交替hjust == 1,hjust == -1但它会导致错误消息:

Error: Incompatible lengths for set aesthetics: size, hjust
Run Code Online (Sandbox Code Playgroud)

我也尝试过定义,size = c(3,3,3,3,3,3,3,3,3), hjust = …

r ggplot2 geom-text

9
推荐指数
1
解决办法
9869
查看次数

如何在R中的ggplot2中更改geom_text中的字体颜色?

我正在使用geom_bar在ggplot2中生成一些基本的条形图.我希望在每个条形图上方以相同的颜色列出数字,我使用的是geom_text.我用填充棒scale_fill_manual(values = alpha(c("#000000", "#FF5733"))).我遇到的问题是条形图上方的文字没有更改为自定义着色.保留默认的R颜色.

library(ggplot2)
Area <- c("Option1", "Option2", "Option3")
Count <- c(193, 56, 4,240, 10, 25)
Type <- c("car", "car", "car", "bike", "bike", "bike")
p <- data.frame(Area, Count, Type)

ggplot(p, aes(x=Area, y=Count, color=Type)) + 
        geom_bar(stat="identity", position="dodge", aes(fill=Type), color="black")  +
        scale_fill_manual(values = alpha(c("#000000", "#FF5733"))) +
        geom_text(aes(label=Count), position=position_dodge(width = 0.9), vjust=-0.40)
Run Code Online (Sandbox Code Playgroud)

我试过以下无济于事:

  1. 有一次,我决定如果我可以将文本设置为黑色,我会接受并继续前进,但是当我这样做时,定位失败并将两个文本集中在一个"选项"而不是将文本保留在各自的文本上酒吧.

    geom_text(aes(label = Count),color ="black",position = position_dodge(width = 0.9),vjust = -0.40)

  2. 然后我尝试了这个:

    geom_text(aes(label = Count,color = c("#000000","#FF5733")),position = position_dodge(width = 0.9),vjust = -0.40)

我通过此调整得到以下错误:错误:美学必须是长度1或与数据(6)相同:标签,颜色,x,y

我想这是因为有6个酒吧,但只指定了2种颜色.然而,当我再添加4次颜色时,它只是从我想要的更远.

我试图发布图片,但我还没有足够的分数!抱歉! …

r ggplot2 geom-text

9
推荐指数
1
解决办法
2万
查看次数

R:ggplot堆积条形图,y轴计数,但百分比为标签

我正在寻找一种方法来标记带百分比的堆积条形图,而y轴显示原始计数(使用ggplot).这是没有标签的情节的MWE:

library(ggplot2)
df <- as.data.frame(matrix(nrow = 7, ncol= 3,
                       data = c("ID1", "ID2", "ID3", "ID4", "ID5", "ID6", "ID7",
                                "north", "north", "north", "north", "south", "south", "south",
                                "A", "B", "B", "C", "A", "A", "C"),
                      byrow = FALSE))

colnames(df) <- c("ID", "region", "species")

p <- ggplot(df, aes(x = region, fill = species))
p  + geom_bar()
Run Code Online (Sandbox Code Playgroud)

我有一个更大的桌子,R很好地计算每个地区的不同物种.现在,我想展示原始计数值(最好在y轴上)和百分比(作为标签)来比较区域之间物种的比例.

我试了很多东西,geom_text()但我认为与其他问题(例如这一个)的主要区别在于

  • 我没有y值的单独列(它们只是每个区域不同物种的数量)和
  • 我需要每个区域的标签总和达到100%(因为它们被认为代表单独的人口),而不是整个情节的所有标签.

任何帮助深表感谢!!

r ggplot2 geom-text

8
推荐指数
1
解决办法
9961
查看次数

标签 统计

geom-text ×10

ggplot2 ×10

r ×10

geom-bar ×3

ggproto ×1

legend ×1

stacked-chart ×1

text ×1