相关疑难解决方法(0)

注释条形上方的值(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
查看次数

如何使用R中的数据值或百分比标记直方图条

我想用直方图中的每个条形标记该区域中的计数数量或该区域中总计数的百分比.我敢肯定必须有办法做到这一点,但我找不到它.这个页面有几张SAS直方图的照片,基本上我正在尝试做的事情(但该网站似乎没有R版本):http://www.ats.ucla.edu/stat/sas/常见问题/ histogram_anno.htm

如果可能的话,根据需要,可以灵活地将标签放在条形图的上方或某处.

我正在尝试使用基本R绘图工具,但我对ggplot2和格子中的方法感兴趣.

graphics r histogram

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

中心标签堆积条(计数)ggplot2

我正在尝试使用这种方法在堆积条形图上放置标签(但如果现在有更好的方法,我会对所有情况持开放态度):

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

这是我原来的情节:

dat <- data.frame(with(mtcars, table(cyl, gear)))

ggplot(dat, aes(x = gear, fill = cyl)) +
    geom_bar(aes(weight=Freq), position="stack") +
    geom_text(position = "stack", aes(x = gear, y = Freq, 
        ymax = 15, label = cyl), size=4)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

这是我尝试在每个填充部分中居标签:

dat2 <- ddply(dat, .(cyl), transform, pos = cumsum(Freq) - 0.5*Freq)

library(plyr)
ggplot(dat2, aes(x = gear, fill = cyl)) +
    geom_bar(aes(weight=Freq), position="stack") +
    geom_text(position = "stack", aes(x = gear, y = pos, 
        ymax = 15, label = cyl), size=4)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

如何将每个填充部分中的标签居中?

r ggplot2

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

将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万
查看次数

ggplot2:如果位置=“填充”,则在条形图上添加标签

我想在填充条形图上添加百分比数字。这是标签位于错误位置的图:

在此输入图像描述

这是数据框:

x0 <- expand.grid(grp    = c("G1","G2")
                 , treat = c("T1","T2")
                 , out   = c("out1","out2","out3","out4")
)
set.seed(1234)
x0$n <- round(runif(16,0,1)*100,0)
head(x0)
  grp treat  out  n
1  G1    T1 out1 11
2  G2    T1 out1 62
3  G1    T2 out1 61
4  G2    T2 out1 62
5  G1    T1 out2 86
6  G2    T1 out2 64
Run Code Online (Sandbox Code Playgroud)

现在,我将 grp/treat 中的总和添加到数据帧中(使用 sql,抱歉!):

x0 <- sqldf(paste("SELECT a.*, (SELECT SUM(n)"
                  ,"            FROM x0 b"
                  ,"            WHERE a.grp = b.grp"
                  ,"                  AND a.treat = …
Run Code Online (Sandbox Code Playgroud)

label r ggplot2 geom-bar

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

geom_bar ggplot2 堆叠、分组的带正值和负值的条形图 - 金字塔图

我什至不知道如何描述我试图正确生成的情节,这不是一个好的开始。我将首先向您展示我的数据,然后尝试解释/展示包含数据元素的图像。

我的数据:

   strain condition count.up count.down
1    phbA  balanced      120       -102
2    phbA   limited      114       -319
3    phbB  balanced      122       -148
4    phbB   limited       97       -201
5   phbAB  balanced      268       -243
6   phbAB   limited      140       -189
7    phbC  balanced       55        -65
8    phbC   limited      104       -187
9    phaZ  balanced       99        -28
10   phaZ   limited      147       -205
11   bdhA  balanced      246       -159
12   bdhA   limited      143       -383
13  acsA2  balanced      491       -389
14  acsA2   limited      131       -295
Run Code Online (Sandbox Code Playgroud)

我有七个样本,每个样本有两种情况。对于这些样本中的每一个,我都有下调的基因数量和上调的基因数量(count.down 和 count.up)。

我想绘制此图,以便对每个样本进行分组;所以 …

r ggplot2 geom-bar

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

如何根据条形的填充暗度控制标签颜色?

我有一个堆积的条形图,标有geom_text。为了增加标签的可见性,我想根据标签背景的“暗度”(即条形的填充色)将标签颜色设置为白色或黑色。因此,较深的条应带有白色标签,而较浅的条应带有黑色标签。

我从问题显示代码开始,该问题在ggplot2中的堆叠条形图上显示数据值,问题的答案R中是否有浅色或深色函数?。最重要的是,我想显示数据值的标签为“白色”或“黑色”,分别取决于堆叠的条形填充颜色是深色还是深色。

我做了两次尝试。第一个是函数的使用aes(colour=...)geom_text但是这个函数失败了……为什么?

第二次尝试是使用函数scale_colour_manual。但是在这里,堆叠的条形线也使用黑色或白色切换设置“着色”。

library(ggplot2)
library(RColorBrewer)

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)

isDark <- function(color) {
  (sum(grDevices::col2rgb(color) *c(299, 587,114))/1000 < 123)
}

## control the color assignments
paletteName <- 'Set1' # …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

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

使用 geom_text 在填充条形图中居中标签

我是 ggplot2 (和 R)的新手,我正在尝试制作一个填充条形图,每个框中都有标签,指示组成该块的百分比。

这是我当前图形的示例,我想向其中添加标签:

##ggplot figure 
library(gpplot2)
library(scales) 

#specify order I want in plots
ZIU$Affinity=factor(ZIU$Affinity, levels=c("High", "Het", "Low"))
ZIU$Group=factor(ZIU$Group, levels=c("ZUM", "ZUF", "ZIM", "ZIF"))

ggplot(ZIU, aes(x=Group))+
geom_bar(aes(fill=Affinity), position="fill", width=1, color="black")+
scale_y_continuous(labels=percent_format())+
scale_fill_manual("Affinity", values=c("High"="blue", "Het"="lightblue", "Low"="gray"))+
labs(x="Group", y="Percent Genotype within Group")+
ggtitle("Genotype Distribution", "by Group")
Run Code Online (Sandbox Code Playgroud)

我想添加以每个框为中心的标签以及该框代表的百分比

我尝试使用此代码添加标签,但它不断生成错误消息“错误:geom_text 需要以下缺失的美学:y”,但我的图没有 y 美学,这是否意味着我不能使用 geom_text?(另外,我不确定一旦 y 美学问题得到解决,geom_text 语句的其余部分是否能够实现我想要的效果,即每个框中居中的白色标签。)

ggplot(ZIU, aes(x=Group)) +
geom_bar(aes(fill=Affinity), position="fill", width=1, color="black")+
geom_text(aes(label=paste0(sprintf("%.0f", ZIU$Affinity),"%")),
    position=position_fill(vjust=0.5), color="white")+
scale_y_continuous(labels=percent_format())+
scale_fill_manual("Affinity", values=c("High"="blue", "Het"="lightblue", "Low"="gray"))+
labs(x="Group", y="Percent Genotype within Group")+
ggtitle("Genotype Distribution", "by Group")
Run Code Online (Sandbox Code Playgroud)

另外,如果有人有消除 NA …

label r bar-chart ggplot2

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

在R中绘制一个二元到多个因子

首先,我还是初学者.我正在尝试用R解释并绘制一个堆栈条形图.我已经看过一些答案,但有些不是我的案例和其他我不明白的:

我有一个dvl包含五列的数据集,Variant,Region,Time,Person和PrecededByPrep.我想对Variant与其他四个预测变量进行多变量比较.每列可以具有两个可能值之一:

  • 变体:elkieder.
  • Region = VLNL.
  • 时间:timeno time
  • 人:personno person
  • PrecededByPrep:10

这是逻辑回归

从我收集的答案中,图书馆ggplot2可能是最好的绘图库.我已经阅读了它的文档,但对于我的生活,我无法弄清楚如何绘制这个:我怎样才能Variant与其他三个因素进行比较?

我花了一段时间,但我在Photoshop中做了类似于我想要的东西(虚构的价值观!).

图形

深灰色/浅灰色:Variant y轴的可能值:频率x轴:每列,细分为可能的值

我知道要制作单独的条形图,堆叠和分组,但基本上我不知道如何堆叠,分组条形图.ggplot2可以使用,但如果可以在没有我喜欢的情况下完成.

我认为这可以看作是一个样本数据集,但我并不完全确定.我是R的初学者,我读到了关于创建样本集的内容.

t <- data.frame(Variant = sample(c("iedere","elke"),size = 50, replace = TRUE),
            Region = sample(c("VL","NL"),size = 50, replace = TRUE),
            PrecededByPrep = sample(c("1","0"),size = 50, replace = TRUE),
            Person = sample(c("person","no person"),size = 50, …
Run Code Online (Sandbox Code Playgroud)

r data-visualization ggplot2

3
推荐指数
2
解决办法
1722
查看次数

ggplot条形图中的中心文本图层

我有一些带有一些文字的直方图,我试图将它作为相应类型的中心

df = read.table(text = "
id   year  type amount
                1  1991  HIIT     22
                2  1991 inter    144
                3  1991  VIIT     98
                4  1992  HIIT     20
                5  1992 inter    136
                6  1992  VIIT    108
                7  1993  HIIT     20
                8  1993 inter    120
                9  1993  VIIT    124
                10 1994  HIIT     26
                11 1994 inter    118
                12 1994  VIIT    120
                13 1995  HIIT     23
                14 1995 inter    101
                15 1995  VIIT    140
                16 1996  HIIT     27
                17 1996 inter    103
                18 1996 …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

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