相关疑难解决方法(0)

在不影响绘图的情况下控制ggplot2图例

我正在用ggplot2绘制线条,如下所示:

ggplot(iris, aes(Petal.Width,Petal.Length,color=Species)) + geom_line() + theme_bw()
Run Code Online (Sandbox Code Playgroud)

目前的情节.

我发现传奇标记很小,所以我希望它们更大.如果我改变大小,情节上的线条也会改变:

ggplot(iris, aes(Petal.Width,Petal.Length,color=Species)) + geom_line(size=4) + theme_bw()
Run Code Online (Sandbox Code Playgroud)

厚厚的情节线条.

但是我只想在图例中看到粗线,我希望图上的线条很薄.我尝试使用,legend.key.size但它改变了标记的正方形,而不是线条的宽度:

library(grid)  # for unit
ggplot(iris,aes(Petal.Width,Petal.Length,color=Species))+geom_line()+theme_bw() + theme(legend.key.size=unit(1,"cm"))
Run Code Online (Sandbox Code Playgroud)

大传奇钥匙

我也尝试过使用积分:

ggplot(iris,aes(Petal.Width,Petal.Length,color=Species)) + geom_line() + geom_point(size=4) + theme_bw()
Run Code Online (Sandbox Code Playgroud)

但当然它仍会影响情节和传奇:

点

我想使用线条和图例的点/点.

所以我要问两件事:

  1. 如何在不改变图的情况下改变图例中的线宽?
  2. 如何在绘图中绘制线条,但在图例中绘制点/点/方块?

plot r legend ggplot2

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

如何增加ggplot2图例中点的大小?

我在一个图中有数千个点并设置"size = 1".但是,图例中的磅值也会减小.如何增加图例中的磅值?

例如.

num <- 10000
set.seed(1)
df <- data.frame(x = seq(1, num), y = runif(num), z = rep(1:2, each = num / 2))
df$z <- factor(df$z)
library(ggplot2)
p <- ggplot(df, aes(x, y, colour = z)) + geom_point(size = 1)
p
Run Code Online (Sandbox Code Playgroud)

图例中点的大小

r ggplot2

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

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

使用ggplot_build和ggplot_gtable后,使用ggsave保存图形

我正在修改使用ggplot构建的图形,方法是更改​​ggplot_build生成的数据(原因类似于包含空间,因为geom_boxplot中填充美学中使用的缺失因子级别包含空间).据我所知,在这个主题上找到了帮助,我应该能够在结果上调用ggsave之前应用ggplot_gtable和arrangeGrob来保存结果(将grid.arrange()图保存到文件中).

然而,我得到一个错误"情节应该是一个ggplot2情节",也有这个简单的可再现的例子:

require('ggplot2')
require('gridExtra')
df <- data.frame(f1=factor(rbinom(100, 1, 0.45), label=c("m","w")), 
                  f2=factor(rbinom(100, 1, 0.45), label=c("young","old")),
                  boxthis=rnorm(100))
g <- ggplot(aes(y = boxthis, x = f2, fill = f1), data = df) + geom_boxplot()
dd <- ggplot_build(g)

# Printing the graph works:
print(arrangeGrob(ggplot_gtable(dd)))

# Saving the graph doesn't:
ggsave('test.png',arrangeGrob(ggplot_gtable(dd)))
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释为什么这不起作用?有没有办法在使用ggplot_build()修改数据后使用ggsave?

(我的软件包版本是gridExtra_0.9.1和ggplot2_0.9.3.1)

r ggplot2

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

ggplot减少图例中的线宽

我正在尝试使用ggplot2控制图

示例脚本:

dat1 <- data.frame(
     sex = factor(c("Female","Female","Male","Male")),
     time = factor(c("Lunch","Dinner","Lunch","Dinner"), levels=c("Lunch","Dinner")),
     total_bill = c(13.53, 16.81, 16.24, 17.42)
)
p = ggplot(data=dat1, aes(x=sex, y=total_bill, group=time, shape=time, color=time)) + geom_line() + geom_point()
Run Code Online (Sandbox Code Playgroud)

现在,我要控制形状和线条在图例中的外观。我想要更大的形状,并且传奇中的细线。但是我不能同时执行两者。

如果我做,

p = p + guides(colour = guide_legend(override.aes = list(size=5)))
Run Code Online (Sandbox Code Playgroud)

线条和形状都较粗,类似于图B。

如果我做,

p = p + guides(colour = guide_legend(override.aes = list(size=5,linetype=0)))
Run Code Online (Sandbox Code Playgroud)

然后形状以正确的大小出现,但线条消失(图A)。我尝试了类似的尝试,但未成功。

p = p + guides(colour = guide_legend(override.aes = list(size=5,linetype=0.5)))
Run Code Online (Sandbox Code Playgroud)

例

如何在图例中实现大形状和细线?

r legend ggplot2

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

标签 统计

ggplot2 ×5

r ×5

legend ×2

plot ×1