gpt4 book ai didi

r - 使用 ggplot2 如何表示图例中的点和线

转载 作者:行者123 更新时间:2023-12-04 11:37:28 27 4
gpt4 key购买 nike

使用 ggplot2 我正在绘制几个函数和一系列点。我无法弄清楚如何表示图例上的点。我意识到我需要使用 aes() 函数,但我不完全明白如何做到这一点。我很抱歉这个例子太长了,但我不知道如何说明它。

## add ggplot2
library(ggplot2)

# Declare Chart values
y_label = expression("y_axis"~~bgroup("(",val / km^{2},")"))
x_label = "x_axis"

#############################
## Define functions
# Create a list to hold the functions
funcs <- list()
funcs[]

# loop through to define functions
for(k in 1:21){

# Make function name
funcName <- paste('func', k, sep = '' )

# make function
func = paste('function(x){exp(', k, ') * exp(x*0.01)}', sep = '')

funcs[[funcName]] = eval(parse(text=func))

}

# Specify values
yval = c(1:20)
xval = c(1:20)

# make a dataframe
d = data.frame(xval,yval)

# Specify Range
x_range <- range(1,51)

# make plot
p <-qplot(data = d,
x=xval,y=yval,
xlab = x_label,
ylab = y_label,
xlim = x_range
)+ geom_point(colour="green")


for(j in 1:length(funcs)){

p <- p + stat_function(aes(y=0),fun = funcs[[j]], colour="blue", alpha=I(1/5))

}

# make one function red
p <- p + stat_function(fun = funcs[[i]], aes(color="red"), size = 1) +
scale_colour_identity("", breaks=c("red", "green","blue"),
labels=c("Fitted Values", "Measured values","All values"))

# position legend and make remove frame
p <- p + opts(legend.position = c(0.85,0.7), legend.background = theme_rect(col = 0))

print(p)

在此先感谢您 - 在过去的几天里,我从这个社区学到了很多东西。

最佳答案

请参阅下面的解决方案。主要思想如下:想象点下面有一条不可见的线,线有不可见的点。因此,每个“系列”都会获得颜色、形状和线型属性,最后我们将根据需要手动将它们设置为不可见值(线为 0,点为 NA)。 ggplot2 将自动合并三个属性的图例。

# make plot 
p <- qplot(data = d, x=xval, y=yval, colour="Measured", shape="Measured",
linetype="Measured", xlab = x_label, ylab = y_label, xlim = x_range,
geom="point")

#add lines for functions
for(j in 1:length(funcs)){
p <- p + stat_function(aes(colour="All", shape="All", linetype="All"),
fun = funcs[[j]], alpha=I(1/5), geom="line")
}

# make one function special
p <- p + stat_function(fun = funcs[[1]], aes(colour="Fitted", shape="Fitted",
linetype="Fitted"), size = 1, geom="line")

# modify look
p <- p + scale_colour_manual("", values=c("green", "blue", "red")) +
scale_shape_manual("", values=c(19,NA,NA)) +
scale_linetype_manual("", values=c(0,1,1))

print(p)

关于r - 使用 ggplot2 如何表示图例中的点和线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2253179/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com