R 在ggplot2中标记线及其渐变和更改图例特征
我使用以下数据查看了1954-2000年间每月最高气温的变化: 为了清晰起见,我决定只在图表上绘制每个月的基线。我的代码如下:R 在ggplot2中标记线及其渐变和更改图例特征,r,ggplot2,R,Ggplot2,我使用以下数据查看了1954-2000年间每月最高气温的变化: 为了清晰起见,我决定只在图表上绘制每个月的基线。我的代码如下: OxTemp$Month <- factor(OxTemp$Month, levels=c("January", "February", "March","April", "May", "June", "August", "September", "October", "November", "December"), ordered=TRUE) p<-g
OxTemp$Month <- factor(OxTemp$Month, levels=c("January", "February", "March","April", "May", "June", "August", "September", "October", "November", "December"), ordered=TRUE)
p<-ggplot(OxTemp, aes(x=Year, y=MaxT, group=Month, colour=Season, linetype=Month))
p+geom_smooth(method = 'lm',size = 1, se = F)
这给了我以下的情节:
我想知道是否有办法:
a更改月份图例中的颜色以匹配季节图例中的颜色
b使图例稍宽一些,以便线型更可见
c在绘图中添加每条线的坡度标签,以便在每条线的右侧显示坡度值
非常感谢
OxTemp <- read.table("http://pastebin.com/raw.php?i=37zUkaA4",header=TRUE,stringsAsFactors=FALSE)
library(ggplot2)
OxTemp$Month <- factor(OxTemp$Month,
levels=c("Jan", "Feb", "Mar","Apr", "May", "Jun","Jul", "Aug", "Sep", "Oct", "Nov", "Dec"), ordered=TRUE)
OxTemp$Season <- factor(OxTemp$Season,
levels=c("Spring", "Summer", "Autumn", "Winter"), ordered=TRUE)
library(plyr)
slopedat <- ddply(OxTemp,.(Month),function(df) data.frame(slope=format(signif(coef(lm(MaxT~Year,data=df))[2],2),scientific=-2),
y=max(predict(lm(MaxT~Year,data=df)))))
p <- ggplot(OxTemp, aes(x=Year, y=MaxT)) +
geom_smooth(aes(group=Month, colour=Season, linetype=Month),method = 'lm',size = 1, se = F) +
scale_colour_manual(values=c("Winter"= 4, "Spring" = 1, "Summer" = 2,"Autumn" = 3)) +
geom_text(data=slopedat,aes(x=2005,y=y,label=paste0("slope = ",slope))) +
scale_x_continuous(limits=c(1950, 2010)) +
guides(linetype=guide_legend(override.aes=list(colour=c("Jan"= 4, "Feb" = 4, "Mar" = 1,
"Apr" = 1, "May" = 1, "Jun" = 2,
"Jul" = 2, "Aug" = 2, "Sep" = 3,
"Oct" = 3, "Nov" = 3, "Dec" = 4)),keywidth=5))
print(p)
没关系。你现在知道了,下次再说吧。试试看。让我们清理注释我已将链接编辑到问题中。您可以添加elegend.key.width=unit4,cm以使图例中的线条变大。我不认为这是很容易得到的颜色为一个月,因为你已经使用了色彩美学的季节。这是好的。你现在知道了,下次再说吧。试试看。让我们清理注释我已将链接编辑到问题中。您可以添加elegend.key.width=unit4,cm以使图例中的线条变大。我不认为这是很容易得到的颜色为一个月,因为你已经使用了色彩美学的季节。我可以问一个快速额外的问题吗?我也在pastebin链接中为Min Temp数据绘制了相同的图形,然后为两个数据的平均值绘制了相同的图形,但有些坡度标签重叠。有没有工具可以移动它们?谢谢:-嗯,你需要为slopedat$y找到一个更好的估值器。您还可以手动定义坐标。也可以使用道奇位置。谢谢罗兰。位置道奇似乎没有任何区别。我可以问一下如何为每个坡度逐个指定坐标吗?只需将slopedat$y更改为适合您需要的值。我可以问一个额外的问题吗?我也在pastebin链接中为Min Temp数据绘制了相同的图形,然后为两个数据的平均值绘制了相同的图形,但有些坡度标签重叠。有没有工具可以移动它们?谢谢:-嗯,你需要为slopedat$y找到一个更好的估值器。您还可以手动定义坐标。也可以使用道奇位置。谢谢罗兰。位置道奇似乎没有任何区别。我可以问一下如何为每个坡度逐个指定坐标吗?只要将slopedat$y更改为适合您需要的值即可。