gpt4 book ai didi

r - 如何在R的条形图中每个因子的顶部显示频率

转载 作者:行者123 更新时间:2023-12-03 21:04:18 24 4
gpt4 key购买 nike

这个问题已经在这里有了答案:




已关闭8年。




Possible Duplicate:
add text to horizontal barplot in R, y-axis at different scale?
Annotate values above bars (ggplot faceted)



使用以下代码,我希望在每列上方显示一个数字,该数字与该列的y值相对应。换句话说,我正在尝试使“QnWeight_initial”在灰色条的顶部显示593,等等。

我的资料:
data<-structure(list(V1 = structure(c(2L, 1L), .Label = c("593", "QnWeight_initial"
), class = "factor"), V2 = structure(c(2L, 1L), .Label = c("566",
"Head"), class = "factor"), V3 = structure(c(2L, 1L), .Label = c("535",
"V1"), class = "factor"), V4 = structure(c(2L, 1L), .Label = c("535",
"V2"), class = "factor"), V5 = structure(c(2L, 1L), .Label = c("535",
"V3"), class = "factor"), V6 = structure(c(2L, 1L), .Label = c("482",
"Left_Leg"), class = "factor"), V7 = structure(c(2L, 1L), .Label = c("474",
"Left_Antenna"), class = "factor"), V8 = structure(c(2L, 1L), .Label = c("237",
"Qn_Weight_Loss"), class = "factor"), V9 = structure(c(2L, 1L
), .Label = c("230", "Days_wrkr_eclosion"), class = "factor"),
V10 = structure(c(2L, 1L), .Label = c("81", "Growth_all"), class = "factor"),
V11 = structure(c(2L, 1L), .Label = c("79", "Growth_1_2"), class = "factor"),
V12 = structure(c(2L, 1L), .Label = c("62", "Growth_1_3"), class = "factor"),
V13 = structure(c(2L, 1L), .Label = c("60", "Growth_2_3"), class = "factor"),
V14 = structure(c(2L, 1L), .Label = c("51", "Right_Antenna"
), class = "factor"), V15 = structure(c(2L, 1L), .Label = c("49",
"Left_Leg_Remeasure"), class = "factor"), V16 = structure(c(2L,
1L), .Label = c("49", "Right_Leg"), class = "factor"), V17 = structure(c(2L,
1L), .Label = c("47", "Head_Remeasure"), class = "factor"),
V18 = structure(c(2L, 1L), .Label = c("46", "Left_Antenna_Remeasure"
), class = "factor")), .Names = c("V1", "V2", "V3", "V4",
"V5", "V6", "V7", "V8", "V9", "V10", "V11", "V12", "V13", "V14",
"V15", "V16", "V17", "V18"), class = "data.frame", row.names = c(NA,
-2L))
dat<-data.frame(fac=unlist(data[1,, drop=FALSE]), freqs=unlist(data[2,, drop=FALSE]))

剧情:
barplot( as.numeric( as.character(dat$freqs)) , main="Sample Sizes of Various Fitness Traits", xaxt='n', xlab='', width=0.85, ylab="Frequency")
par(mar=c(5,8,4,2))
labels<-unlist(data[1,,drop=FALSE])
text(1:18, par("usr")[3] -0.25, srt=90, adj=1,labels=labels,xpd=TRUE, cex=0.6)

最佳答案

您遇到了问题,因为dat$freqs是一个因素,即使它的打印表示形式“看起来”也是数字。 (键入str(foo)(此处为str(dat)str(dat$freqs))几乎总是有用的,以查看正在使用的数据的真实结构。)

无论如何,一旦您将dat$freq转换为"numeric"类,构造图就变得很简单:

## Make the frequencies numbers (rather than factors)
dat$freqs <- as.numeric(as.character(dat$freqs))
## Find a range of y's that'll leave sufficient space above the tallest bar
ylim <- c(0, 1.1*max(dat$freqs))
## Plot, and store x-coordinates of bars in xx
xx <- barplot(dat$freqs, xaxt = 'n', xlab = '', width = 0.85, ylim = ylim,
main = "Sample Sizes of Various Fitness Traits",
ylab = "Frequency")
## Add text at top of bars
text(x = xx, y = dat$freqs, label = dat$freqs, pos = 3, cex = 0.8, col = "red")
## Add x-axis labels
axis(1, at=xx, labels=dat$fac, tick=FALSE, las=2, line=-0.5, cex.axis=0.5)

关于r - 如何在R的条形图中每个因子的顶部显示频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12481430/

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