Tag: ggplot2

ggplot2:覆盖密度曲线的直方图

我正在尝试ggplot2,我遇到了一些问题。 我想要做的是做一个密度值的直方图,并用密度函数(而不是密度估计)曲线覆盖。 使用一个简单的标准正常例子,这里是一些数据: x <- rnorm(1000) 我可以: q <- qplot( x, geom="histogram") q + stat_function( fun = dnorm ) 但是这给出了频率而不是密度的直方图的比例。 与..density..我可以得到适当的规模的直方图: q <- qplot( x,..density.., geom="histogram") q 但现在这给了一个错误: q + stat_function( fun = dnorm ) 有没有我没有看到的东西? 另一个问题,有没有办法绘制一个函数的曲线,如curve() ,但不是作为层?

手动设置ggplot2的组颜色

我有一个数据集,我必须做几十个地块。 数据由每组30个组和几组测量值组成。 大多数地块不会一次使用所有的群体。 我的目标是为一组组合设置一个单一的颜色调色板,使得所有graphics中的任何给定的组都是相同的颜色。 在下面的例子中,这意味着Group C在Plot 1和Plot 2是相同的颜色。 我的问题是如何去做这件事。 我已经尝试了scale_fill_manual(和适当的scal_color_manual)的几个变种。 虽然颜色是从指定的调色板中select出来的,但我似乎无法通过组指示调色板,或者以某种方式“跳过”与缺失组相对应的颜色 我也想过尝试添加颜色信息作为正在绘制的数据列,但是我不确定如何使用此列作为组的颜色。 # SAMPLE DATA: DT1 <- data.table(Name=c("C_sub1", "A_sub1", "A_sub2"), Value=c(2,5,3), Group=c("C", "A", "A"), key="Group") DT2 <- data.table(Name=c("A_sub1", "B_sub1", "C_sub1", "C_sub2"), Value=c(4,3,6,3), Group=c("A", "B", "C", "C"), key="Group") # SAMPLE Color Pallette ColorsDT <- data.table(Group=LETTERS[1:5], Color=c("#333BFF", "#CC6600", "#9633FF", "#E2FF33", "#E3DB71"), key="Group") # Add a column for […]

如何删除ggplot2中轴与面积图之间的空间?

我有以下数据框: uniq <- structure(list(year = c(1986L, 1987L, 1991L, 1992L, 1993L, 1994L, 1995L, 1996L, 1997L, 1998L, 1999L, 2000L, 2001L, 2002L, 2003L, 2004L, 2005L, 2006L, 2007L, 2008L, 2009L, 2010L, 2011L, 2012L, 2013L, 2014L, 1986L, 1987L, 1991L, 1992L, 1993L, 1994L, 1995L, 1996L, 1997L, 1998L, 1999L, 2000L, 2001L, 2002L, 2003L, 2004L, 2005L, 2006L, 2007L, 2008L, 2009L, 2010L, 2011L, 2012L, […]

R将variables列索引传递给ggplot2

我试图将列索引传递给ggplot作为我将重复使用的函数的一部分。 喜欢: myplot <- function(df){ ggplot(df, aes(df[, 1], df[, 2])) + geom_point() } 我将始终使用第一列作为我的xvariables,第二列作为我的yvariables,但列名称在数据集之间更改。 我已经搜遍了所有的想法? 编辑: 这是我使用的答案: require(ggplot2) myplot <- function(df){ ggplot(df, aes_string(colnames(df)[1], colnames(df)[2])) + geom_point() }

删除ggplot2中的额外图例

我有一个简单的数据框,我正在试图使用ggplot2做一个组合的线和点图。 假设我的数据如下所示: df <- data.frame(x=rep(1:10,2), y=c(1:10,11:20), group=c(rep("a",10),rep("b",10))) 我正在试图做一个情节: g <- ggplot(df, aes(x=x, y=y, group=group)) g <- g + geom_line(aes(colour=group)) g <- g + geom_point(aes(colour=group, alpha = .8)) g 结果看起来很好,只有一个例外。 它有一个额外的图例,显示我的geom_point图层的alpha。 如何让图例显示组颜色,但不显示我的alpha设置?

我怎样才能在ggplot(与传说)一致的宽度图?

我想要绘制几个不同的类别。 这些是不同的类别,每个类别都有自己的一组标签,但在文档中组合在一起是有意义的。 以下给出一些简单的堆叠条形图示例: df <- data.frame(x=c("a", "b", "c"), y=c("happy", "sad", "ambivalent about life")) ggplot(df, aes(x=factor(0), fill=x)) + geom_bar() ggplot(df, aes(x=factor(0), fill=y)) + geom_bar() 问题是,不同的标签,传说有不同的宽度,这意味着情节有不同的宽度,导致事情看起来有点愚蠢,如果我做一个表或子\subfigure元素。 我该如何解决这个问题? 有没有一种方法可以明确地设置graphics或图例的宽度(绝对或相对)?

将grid.arrange()绘图保存到文件

我正在尝试使用ggplot2绘制多个图,使用grid.arrange()来排列它们。 由于我设法find某人描述了我所遇到的确切问题,所以我从链接中引用了问题描述: 当我在ggsave()之后使用grid.arrange() ,即 grid.arrange(sgcir1,sgcir2,sgcir3,ncol=2,nrow=2) ggsave("sgcirNIR.jpg") 我不保存网格图,但最后一个单独的ggplot。 是否有任何方法实际上保存的情节,通过grid.arrange()使用ggsave()或类似的东西显示? 除了使用旧的方式 jpeg("sgcirNIR.jpg") grid.arrange(sgcir1,sgcir2,sgcir3,ncol=2,nrow=2) dev.off() 相同的链接给出了下面的解决scheme: require(grid) require(gridExtra) p <- arrangeGrob(qplot(1,1), textGrob("test")) grid.draw(p) # interactive device ggsave("saving.pdf", p) # need to specify what to save explicitly 但是,我不知道如何使用ggsave()来保存grid.arrange()调用的输出在下面的代码,这是从链接 : library(ggplot2) library(gridExtra) dsamp <- diamonds[sample(nrow(diamonds), 1000), ] p1 <- qplot(carat, price, data=dsamp, colour=clarity) p2 <- qplot(carat, price, data=dsamp, colour=clarity, geom="path") […]

ggplot2 0.9.0自动从plot图例中删除未使用的因子级别?

我最近从版本0.8.9升级到ggplot2 0.9.0,现在我得到的是,我的情节的传说只显示在情节中使用的因素水平(它省略了未使用的)。 在它之前将所有的因素级别包括在图例中。 我正在运行Windows 7和R 2.15.0(今天之前的2.14.2)。 有没有其他人也find这个? 有没有一种方法可以让我的情节图例中显示未使用的因子水平? library(ggplot2) df <- data.frame(fruit = rep(c("apple", "orange"), times=11), year = 1990:2011, qty = rnorm(22, 100, 20)) # This plot only gives "apple" in the legend now. # Before, I used to get both "apple" and "orange". qplot(year, qty, data = subset(df, fruit=="apple"), colour = fruit) qplot()用于在图例中给我“苹果”和“橙色”(即使只有“苹果”的点)。 现在我只在传说中得到“苹果”。 […]

将时间序列数据分成时间间隔(比如一个小时),然后绘制计数

我只有一个时间序列的数据文件: '2012-02-01 17:42:44' '2012-02-01 17:42:44' '2012-02-01 17:42:44' …我想分开数据,以便在小时之前计数。 说: '2012-02-01 17:00:00' 20 '2012-02-01 18:00:00' 30 “20”和“30”表示该期间的时间序列条目的数量。 我希望能够绘制出“计数”的时间。 我怎样才能做到这一点与R? 这是我目前的线图图。 library(ggplot2) req <- read.table("times1.dat") summary(req) da <- req$V2 db <- req$V1 time <- as.POSIXct(db) png('time_data_errs.png', width=800, height=600) gg <- qplot(time, da) + geom_line() print(gg) dev.off()

不要掉落零计数:闪避的barplot

我在ggplot2中做了一个闪避的barplot,一个分组有一个零计数,我想要显示。 我记得以前在这里看到这个,并认为scale_x_discrete(drop=F)会起作用。 它似乎不适用于躲闪的酒吧。 我怎样才能使零点显示? 例如,(下面的代码)在下面的图中,type8〜group4没有例子。 我仍然希望情节显示零计数的空白空间,而不是消除酒吧。 我该怎么做? mtcars2 <- data.frame(type=factor(mtcars$cyl), group=factor(mtcars$gear)) m2 <- ggplot(mtcars2, aes(x=type , fill=group)) p2 <- m2 + geom_bar(colour="black", position="dodge") + scale_x_discrete(drop=F) p2