gpt4 book ai didi

r - 在 geom_bar 中按类别定义不同的标签大小

转载 作者:行者123 更新时间:2023-12-04 15:44:47 26 4
gpt4 key购买 nike

我正在尝试使用 geom_bar 绘制堆积条形图并在条形图中用其值标记每个类别。由于某些类别的值较小,因此条形图相应段的高度有时较小。所以,我正在尝试使用 geom_text 来调整标签的大小。 .
我试图定义一个向量,称为 size ,这取决于我试图绘制的变量的值,但是,尽管标签的大小在类别之间确实有所不同,但它似乎与值无关。另外,我不确定为什么我会在图表的右侧得到标签大小的图例。
这是我正在使用的代码的剥离版本:

library(ggplot2)
library(plyr)
library(scales)

Var1 = as.factor(rep(c("A", "B", "C", "D", "E", "F"),2))
Var2 = as.factor(rep(c("Y1","Y2"),each=6))
Freq = c(0.4, 0.1, 0.3, 0.1, 0.05, 0.05,0.2,0.2,0.3,0.2,0.05,0.05)
Data = data.frame(Var1, Var2, Freq)
Data <- ddply(Data, .(Var2), mutate, y = cumsum(Freq)-Freq/2)

size = ifelse(Data$Freq > 0.05, 10, 3)
label = paste(round(Data$Freq*100,0),"%", sep = "")
p = ggplot(data = Data, aes(x = factor(''), y = Freq, fill = Var1)) +
geom_bar(stat = "identity",position = "fill", width = 1) +
scale_fill_brewer(palette = 3) +
facet_grid(facets = . ~ Var2) +
geom_text(aes(y = y, label = label,
position ="identity", face = "bold"), size = size, hjust=0.5, vjust=0.5) +
xlab('') + ylab('') + labs(fill = '') + ggtitle('Example') +
theme(axis.text.y = element_text(size=14,face="bold"),
panel.background = element_blank(),
plot.title = element_text(size = 20, colour = "black", face = "bold"))
p

据我所知,问题是由方面引起的,因为这个稍微简化的版本(即没有方面)工作正常:
library(ggplot2)
library(plyr)
library(scales)

Var1 = as.factor(c("A", "B", "C", "D", "E", "F"))
Freq = c(0.4, 0.1, 0.3, 0.1, 0.05, 0.05)
y = cumsum(Freq)-Freq/2
Data = data.frame(Var1, Freq, y)

size = ifelse(Data$Freq > 0.05, 10, 3)
label = paste(round(Data$Freq*100,0),"%", sep = "")
p = ggplot(data = Data, aes(x = factor(''), y = Freq, fill = Var1)) +
geom_bar(stat = "identity",position = "fill", width = 1) +
scale_fill_brewer(palette = 3) +
geom_text(aes(y = y, label = label,
position ="identity", face = "bold"), size = size, hjust=0.5, vjust=0.5) +
xlab('') + ylab('') + labs(fill = '') + ggtitle('Example') +
theme(axis.text.y = element_text(size=14,face="bold"),
panel.background = element_blank(),
plot.title = element_text(size = 20, colour = "black", face = "bold"))
p

最佳答案

通过添加 size到您的数据框并在您的 geom_text 中移动这些参数aes ()` 这对我来说似乎很好。我认为..

Data$size <- size

p <- ggplot(data = Data, aes(x = factor(''), y = Freq, fill = Var1)) +
geom_bar(stat = "identity",position = "fill", width = 1) +
scale_fill_brewer(palette = 3) +
geom_text(aes(y = y, label = label,
position ="identity", face = "bold", size = size), hjust=0.5,
vjust=0.5) +
xlab('') + ylab('') + labs(fill = '') + ggtitle('Example') +
theme(axis.text.y = element_text(size=14,face="bold"),
panel.background = element_blank(),
plot.title = element_text(size = 20, colour = "black", face = "bold")) +
facet_grid(facets = . ~ Var2) +
guides(size=FALSE)

此外,如果您添加 + guides(size=FALSE)最后,正如我所做的那样,这将删除您的尺寸图例。

我对此的解释可能是错误的,即一旦您切面,您仍然提供全长 size并且不允许 facet 根据 Var2 截断大小数据.

我认为您的尺寸问题是 size你只有两种尺寸,你会得到很大的差异(可能必须有一些相对缩放),也许添加 + scale_size(range=c(6,10))并玩这个以获得更合适的东西? 6,10尺寸范围对我来说看起来好多了。

enter image description here

关于r - 在 geom_bar 中按类别定义不同的标签大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20798231/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com