标签: ggplot2

ggplot2:调整图例中的符号大小

我该如何更改图例中符号的大小?我检查了文件,theme但没有找到答案.

这是一个例子:

library(ggplot2);library(grid)
set.seed(1000)
x <- 1:6
mu <- sin(x)
observed <- mu + rnorm(length(x), 0, 0.5*sd(mu))
data <- data.frame(
  t=rep(x, 2), 
  value=c(mu, observed) - min(mu, observed) + 0.5, 
  class = rep(c("mu", "observed"), each=length(x)))
mu <- data$value[1:length(x)]
observed <- data$value[1:length(x) + length(x)]
mu.min <- mu - 3 * 0.5 * sd(mu)
mu.max <- mu + 3 * 0.5 * sd(mu)
g <- ggplot(data=data)
g <- g + geom_point(aes(x=value, y=t, shape=class, size=24)) + scale_size(guide="none")
g <- g + scale_shape(name="", …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

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

反ggplotGrob?

我有一个函数来操作ggplot对象,通过将其转换为grob然后修改图层.我希望函数返回一个ggplot对象而不是grob.有没有一种简单的方法将grob转换回gg?

该文档上ggplotGrob是非常稀疏.
简单的例子:

P <- ggplot(iris) + geom_bar(aes(x=Species, y=Petal.Width), stat="identity")

G <- ggplotGrob(P)
... some manipulation to G ...

## DESIRED: 
P2 <- inverse_of_ggplotGrob(G)

such that, we can continue to use basic ggplot syntax, ie
`P2 + ylab ("The Width of the Petal")`
Run Code Online (Sandbox Code Playgroud)

更新:

要回答评论中的问题,这里的动机是根据每个方面中标签名称的值,以编程方式修改构面标签的颜色.以下功能很好地工作(基于前一个问题中的baptise输入).

我希望返回值colorByGroup是一个ggplot对象,而不仅仅是一个grob.

这是代码,对于那些感兴趣的人

get_grob_strips <- function(G, strips=grep(pattern="strip.*", G$layout$name)) {

  if (inherits(G, "gg"))
    G <- ggplotGrob(G)
  if (!inherits(G, "gtable"))
    stop ("G must be a gtable object or a gg object")

  strip.type <- …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 grob

49
推荐指数
2
解决办法
2727
查看次数

ggplot2,facet_grid,自由秤?

在以下示例中,如何根据每个面板中的数据获取y轴限制?

mt <- ggplot(mtcars, aes(mpg, wt, colour = factor(cyl))) + geom_point() 
Run Code Online (Sandbox Code Playgroud)

这些都不会这样做:

mt + facet_grid(. ~ cyl, scales="free")
mt + facet_grid(. ~ cyl, scales="free_y")
Run Code Online (Sandbox Code Playgroud)

r ggplot2

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

如何在ggplot中合并颜色,线条样式和形状图例

假设我在ggplot中有以下情节:

ggplot图

它是使用以下代码生成的:

x <- seq(0, 10, by = 0.2)
y1 <- sin(x)
y2 <- cos(x)
y3 <- cos(x + pi / 4)
y4 <- sin(x + pi / 4)
df1 <- data.frame(x, y = y1, Type = as.factor("sin"), Method = as.factor("method1"))
df2 <- data.frame(x, y = y2, Type = as.factor("cos"), Method = as.factor("method1"))
df3 <- data.frame(x, y = y3, Type = as.factor("cos"), Method = as.factor("method2"))
df4 <- data.frame(x, y = y4, Type = as.factor("sin"), Method = as.factor("method2"))

df.merged <- rbind(df1, …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

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

ggplot中的条形排序

我已经在这个论坛中查看了答案,但似乎无法找到这个具体问题的答案.我有以下数据,并希望创建一个条形图,其中条形按"值"从大到小排序,而不是按字母顺序排列:

breadth_data <- read.table(textConnection("Stakeholder  Value
'Grantseekers'  0.90
'Donors'    0.89
'Community' 0.55
'Hurricane Relief Fund' 0.24
'Media' 0.19
'Employment Seekers'    0.12
'Affiliates'    0.10
'Youth' 0.09
'Women' 0.02
'Former Board Members'  0.01"), header=TRUE)
Run Code Online (Sandbox Code Playgroud)

然后是基本条形图:

c <- ggplot(breadth_data, aes(x=Stakeholder, y=Value))
c + geom_bar(stat="identity") + coord_flip() + scale_y_continuous('') + scale_x_discrete('')
Run Code Online (Sandbox Code Playgroud)

我已经尝试过在StackOverflow上看到的许多不同的重新排序和转换,但我似乎无法找到一个有效的.我相信这很简单,但我将不胜感激!

谢谢,

格雷格

r bar-chart ggplot2

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

在grid.Call(L_textBounds,as.graphicsAnnot(X $标签),X $ X,X $ Y,错误:多边形边缘未找到

我刚刚在Mac OS X上安装了RStudio,版本10.7.3执行以下命令后

library(ggplot2)
qplot(mpg, wt, data=mtcars)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Error in grid.Call(L_textBounds, as.graphicsAnnot(x$label), x$x, x$y,  : 
  Polygon edge not found
In addition: Warning messages:
1: In grid.Call(L_textBounds, as.graphicsAnnot(x$label), x$x, x$y,  :
  no font could be found for family "Arial"
2: In grid.Call(L_textBounds, as.graphicsAnnot(x$label), x$x, x$y,  :
  no font could be found for family "Arial"
Run Code Online (Sandbox Code Playgroud)

任何想法,重启都没有用!!

干杯

r ggplot2

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

如何使用ggplot绘制时抑制警告

将缺失值传递给ggplot时,它非常友好并警告我们它们存在.这在交互式会话中是可以接受的,但是在编写报表时,输出不会出现警告,特别是如果有很多警告.下面的示例缺少一个标签,产生警告.

library(ggplot2)
library(reshape2)
mydf <- data.frame(
  species = sample(c("A", "B"), 100, replace = TRUE), 
  lvl = factor(sample(1:3, 100, replace = TRUE))
)
labs <- melt(with(mydf, table(species, lvl)))
names(labs) <- c("species", "lvl", "value")
labs[3, "value"] <- NA
ggplot(mydf, aes(x = species)) + 
   stat_bin() + 
   geom_text(data = labs, aes(x = species, y = value, label = value, vjust = -0.5)) +
   facet_wrap(~ lvl)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

如果我们suppressWarnings绕过最后一个表达式,我们会得到有多少警告的摘要.为了论证,让我们说这是不可接受的(但确实非常诚实和正确).打印ggplot2对象时如何(完全)抑制警告?

r ggplot2

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

如何在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()
Run Code Online (Sandbox Code Playgroud)

问题在于,对于不同的标签,图例具有不同的宽度,这意味着图表具有不同的宽度,如果我制作桌子或\subfigure元素,会导致看起来有点傻.我怎样才能解决这个问题?

有没有办法明确设置绘图或图例的宽度(绝对或相对)?

图1基于x(更宽) 图2基于y(较窄)

r ggplot2

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

ggplot2增加图例键之间的空间

如何增加ggplot2情节图例的键之间的空间?

library(ggplot2)
ggplot(aes(mpg, wt, colour = factor(cyl)),
       , data = mtcars) +
      geom_point() +
  theme(legend.direction = "horizontal", 
        legend.position = "bottom") +
  guides(color = guide_legend(nrow=2))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我正在寻找一个ggplot2选项,在上图中的(键4和键6)之间添加一种垂直调整?我应该创建自定义图例键吗?

PS:我想增加不在标签之间的方框之间的空白区域.

想要的情节是:

在此输入图像描述

注意:没有问题不与另一个问题重复.我们希望在这里添加已经在多行中的项之间的垂直间距.在另一个问题中,我们有1行图例,我们想在项目之间添加空格(水平).

r ggplot2

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

在aes内的局部变量

aes当我用ggplot绘图时,我正在尝试使用局部变量.这是我的问题归结为本质:

xy <- data.frame(x=1:10,y=1:10)

plotfunc <- function(Data,YMul=2){
    ggplot(Data,aes(x=x,y=y*YMul))+geom_line()
}

plotfunc(xy)
Run Code Online (Sandbox Code Playgroud)

这会导致以下错误:

Error in eval(expr, envir, enclos) : object 'YMul' not found
Run Code Online (Sandbox Code Playgroud)

好像我不能使用局部变量(或函数参数)aes.可能是由于aes当局部变量超出范围后执行的内容会发生吗?我怎样才能避免这个问题(除了不使用局部变量aes)?

r ggplot2

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

标签 统计

ggplot2 ×10

r ×10

bar-chart ×1

grob ×1