我正在用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)
但当然它仍会影响情节和传奇:

我想使用线条和图例的点/点.
所以我要问两件事:
我在一个图中有数千个点并设置"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)

我该如何更改图例中符号的大小?我检查了文件,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) 我正在修改使用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)
我正在尝试使用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)
如何在图例中实现大形状和细线?