R ggplot2:将线宽应用于图例键

R ggplot2:将线宽应用于图例键,r,ggplot2,R,Ggplot2,考虑到data.frame“dfc”: 我想用不同的线条样式(取决于“变量”)和宽度(取决于“大小”)将“值”与“滞后”进行对比。我用这段代码实现了: ggplot(dfc) + geom_line(aes(x = lag, y = value, linetype = variable, size = size)) + scale_size(range=c(1, 2), guide=FALSE) + scale_linetype_manual(values = 1:2, labels = c("

考虑到data.frame“dfc”:

我想用不同的线条样式(取决于“变量”)和宽度(取决于“大小”)将“值”与“滞后”进行对比。我用这段代码实现了:

ggplot(dfc) +
geom_line(aes(x = lag, y = value, linetype = variable, size = size)) +
scale_size(range=c(1, 2), guide=FALSE) +
scale_linetype_manual(values = 1:2, labels = c("Name of var1    ", "Name of var2")) +
theme(legend.title = element_blank(), legend.position = "bottom",
      legend.direction = "horizontal")
给出这个图:

但我不知道如何同时相应地更改图例中线条的大小,并保持重命名。

库(ggplot2)
library(ggplot2)
library(grid)

z <- ggplot(dfc) + geom_line(aes(x = lag, y = value, linetype = variable, size = size)) + 
     scale_size(range=c(1, 2), guide=FALSE)

z <- z + theme(legend.key.width = unit(5,"cm"))
图书馆(网格)
z因为
dfc
是按
$variable
分组的,
$size
在每个组中是常量。请尝试提取
$size
并手动设置

var_size = c('var1'=2, 'var2'=1)
ggplot(dfc) + 
geom_line(aes(x = lag, y = value, linetype = variable, size=variable)) + 
scale_size_manual(values=var_size)

z不,对不起,没有。我承认我的要求不明确。我想更改图例中线条的大小,而不是键本身的长度/宽度。好的。我现在意识到我自己的问题不适合我的需要。我必须编辑它。
var2
应该是1,而不是2。如前所述,我不需要更改键的宽度。它可以工作使用
guide_legend
中的
list(size=c(2,1))
澄清:
legend.key.width
更改图例符号的宽度(在本例中为一行),而
list(size=2)
增加图例中线条的厚度(或高度)。
library(ggplot2)
library(grid)

z <- ggplot(dfc) + geom_line(aes(x = lag, y = value, linetype = variable, size = size)) + 
     scale_size(range=c(1, 2), guide=FALSE)

z <- z + theme(legend.key.width = unit(5,"cm"))
var_size = c('var1'=2, 'var2'=1)
ggplot(dfc) + 
geom_line(aes(x = lag, y = value, linetype = variable, size=variable)) + 
scale_size_manual(values=var_size)
z <- ggplot(dfc) + 
     geom_line(aes(x = lag, y = value, linetype = variable, size = size)) + 
     scale_size(range=c(1, 2), guide=FALSE)
z <- z + theme(legend.key.width = unit(5,"cm"))
z <- z + guides(linetype = guide_legend(override.aes = list(size = 2)))
z