相关疑难解决方法(0)

在ggplot2中的堆积条形图上显示数据值

我想在ggplot2中的堆积条形图上显示数据值.这是我尝试过的代码

Year      <- c(rep(c("2006-07", "2007-08", "2008-09", "2009-10"), each = 4))
Category  <- c(rep(c("A", "B", "C", "D"), times = 4))
Frequency <- c(168, 259, 226, 340, 216, 431, 319, 368, 423, 645, 234, 685, 166, 467, 274, 251)
Data      <- data.frame(Year, Category, Frequency)
library(ggplot2)
p <- qplot(Year, Frequency, data = Data, geom = "bar", fill = Category,     theme_set(theme_bw()))
p + geom_text(aes(label = Frequency), size = 3, hjust = 0.5, vjust = 3, position =     "stack") 
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我想在每个部分的中间显示这些数据值.在这方面的任何帮助将受到高度赞赏.谢谢

graphics r ggplot2

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

注释条形上方的值(ggplot刻面)

我最喜欢的基本图形技巧之一是Bill Dunlap的拾音器.能够在条形图中将数值(或任何值)放置在条形图上方(我不会使用它但偶尔会喜欢它).

mtcars2 <- mtcars[order(-mtcars$mpg), ]
par(cex.lab=1, cex.axis=.6, 
    mar=c(6.5, 3, 2, 2) + 0.1, xpd=NA) #shrink axis text and increas bot. mar.

barX <- barplot(mtcars2$mpg,xlab="Cars", main="MPG of Cars", 
   ylab="", names=rownames(mtcars2), mgp=c(5,1,0),
   ylim=c(0, 35), las=2, col=mtcars2$cyl)

mtext(side=2, text="MPG", cex=1, padj=-2.5)
text(cex=.5, x=barX, y=mtcars2$mpg+par("cxy")[2]/2, mtcars2$hp, xpd=TRUE) 
Run Code Online (Sandbox Code Playgroud)

哪个给你:

在此输入图像描述

我希望能够在ggplot中使用多面条形图进行相同类型的注释.显然,这些值也必须是你所绘制的相同的两个变量,所以你可以用ftable获得它们.我想把下面的ftable结果(对于非零值)并将它们放在各自的条形图上方.

library(ggplot2)
mtcars2 <- data.frame(id=1:nrow(mtcars), mtcars[, c(2, 8:11)])
mtcars2[, -1] <- lapply(mtcars2[, -1], as.factor)

with(mtcars2, ftable(cyl, gear, am))

ggplot(mtcars2, aes(x=cyl)) + geom_bar() + 
    facet_grid(gear~am)
Run Code Online (Sandbox Code Playgroud)

这对我来说似乎很难,但也许它比我想象的要容易.提前感谢您考虑此问题.

r ggplot2

21
推荐指数
1
解决办法
9475
查看次数

格子上的直方图

由于hist()基数R没有报告百分比(并且freq = FALSE)也没有帮助,我转向lattice.

histogram(rnorm(10000))
Run Code Online (Sandbox Code Playgroud)

请帮我解决以下问题:

  1. 我如何摆脱情节周围的盒子?
  2. 如何单独定义x/y标签和x/y轴的cex?
  3. 如何为x轴和y轴提供自定义名称?

r histogram lattice

6
推荐指数
2
解决办法
6269
查看次数

使用ggplot2在各个条上对齐数字

我想在下图中的个人条上显示数字.

df <- structure(list(A = structure(c(1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L,
3L), .Label = c("0-50,000", "50,001-250,000", "250,001-Over"), class = "factor"),
    B = structure(c(1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L), .Label = c("0-50,000",
    "50,001-250,000", "250,001-Over"), class = "factor"), Freq = c(0.507713884992987,
    0.258064516129032, 0.23422159887798, 0.168539325842697, 0.525280898876405,
    0.306179775280899, 0.160958904109589, 0.243150684931507,
    0.595890410958904)), .Names = c("A", "B", "Freq"), class = "data.frame", row.names = c(NA,
-9L))

library(ggplot2)
p <- ggplot(data=df, aes(x=A, y=Freq))+
            geom_bar(aes(fill=B), position=position_dodge()) + theme_bw()
p <- p + scale_y_continuous(formatter="percent")
p …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

6
推荐指数
1
解决办法
4090
查看次数

如何在“barplot”图形的条形上方添加标签?

我之前问过一个问题,但现在我想知道如何将标签放在栏上方。

旧帖子:如何创建具有预定义的非均匀间隔的频率直方图?

dataframe <- c (1,1.2,40,1000,36.66,400.55,100,99,2,1500,333.45,25,125.66,141,5,87,123.2,61,93,85,40,205,208.9)
Run Code Online (Sandbox Code Playgroud)

更新日期

更新

按照同事的指导,我正在更新问题。

我有一个数据库,我想计算该基数的给定值在预定义范围内出现的频率,例如:0-50、50-150、150-500、500-2000。

在帖子中(如何创建具有预定义的非均匀间隔的频率直方图?)我设法做到了这一点,但我不知道如何在条形上方添加标签。我试过:

barplort (data, labels = labels),但没有成功。

我使用 barplot 因为该帖子推荐了我,但如果可以使用 ggplot 来完成,那也很好。

r

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

标签 统计

r ×5

ggplot2 ×3

graphics ×1

histogram ×1

lattice ×1