ggplot2||图层添加特定斜率的直线并显示对应图例

需求描述

上次内容讲述了在做好的图层中添加特定的阴影区,来显示着重突出的部分。本次内容学习一下在图层中添加特定斜率的直线并在图例中显示,我们知道添加特定斜率的直线一般分为水平线geom_hline,垂直线geom_vline和特定斜率的直线geom_abline,添加对应的图例诸如scale_shape_manualscale_linetype_manual,scale_color_manual,...

1. 数据导入

本次内容以数据集mtcars为例,来演示图形绘制。

rm(list = ls(all=TRUE))#清除所有变量内存
library(ggplot2)#load packages
data(mtcars)
head(mtcars)
> head(mtcars)
                   mpg cyl disp  hp drat    wt  qsec vs am gear carb
Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

2. 图形绘制(散点图)

#设置斜率直线属性
df_abline <- data.frame(intercept=c(.2,1.05,2),slope=c(3, 1.5,.7),linetype=factor(c(1,3,5)))
#作图
p <- ggplot(data=mtcars, aes(x=wt, y=drat)) + 
  geom_point(aes(shape = factor(cyl),color = factor(cyl))) +#赋值给颜色或性状属性(分组因子变量)
  geom_abline(data=df_abline, aes(intercept=intercept,slope=slope, linetype=linetype)) +
  labs(color="",linetype="") +
  scale_shape_manual(name = "",
                     values=c(1,2,4),
                     labels=c("4","6","8")) +
  scale_linetype_manual(name = "",
                        values=c(1,3,2),
                        labels=c("a","b","c"))
p
geom_abline

2.1 添加水平或者垂直线

df_hline <- data.frame(yintercept=c(3,3.5,4),linetype=factor(c(1,3,5)))
#df_vline <- data.frame(xintercept=c(2,3.5,5),linetype=factor(c(1,3,5)))
p1 <- ggplot(data=mtcars, aes(x=wt, y=drat)) + 
  geom_point(aes(shape = factor(cyl),color = factor(cyl))) +
  geom_hline(data = df_hline, aes(yintercept = intercept, linetype = linetype)) +
  labs(color="",linetype="") +

  scale_shape_manual(name = "",
                     values=c(1,2,4),
                     labels=c("4","6","8")) +
  scale_linetype_manual(name = "",
                        values=c(1,3,2),
                        labels=c("a","b","c"))
p1
Rplot_hline

Rplot_vline

3. 散点图+趋势线

df_abline <- data.frame(intercept=c(.2,1.05,2),slope=c(3, 1.5,.7),linetype=factor(c(1,3,5)))

p2 <- ggplot(data=mtcars, aes(x=wt, y=drat)) + 
  geom_point(aes(shape = factor(cyl),color = factor(cyl))) +
  stat_smooth(aes(linetype="regression"),method = "lm",
              formula = y ~ x, se = TRUE, colour = 1, size = 0.5) +
  geom_abline(data = df_abline, aes(intercept = intercept,slope = slope, linetype = linetype)) +
  labs(color="",linetype="") +

  scale_shape_manual(name = "",
                     values=c(1,2,4),
                     labels=c("4","6","8")) +
  scale_linetype_manual(name = "",
                        values=c(1,3,2,4),
                        labels=c("a","b","c","regression"))
p2

Rplot_gression

可以看出当加入趋势线后,legend发生了一些变化

4. 条形图

(a) 将vline添加到现有绘图并使其出现在ggplot2图例中?
(b) 将一条线添加到ggplot2图并调整图例
(c) How to make geom_abline show_guide line types show up in legend correctly

set.seed(20200505)
df <- data.frame(val=rnorm(300, 75, 10))
cuts1 <- data.frame(Thresholds="Thresholds A", vals=c(43, 70, 90)) 
cuts2 <- data.frame(Thresholds="Thresholds B", vals=c(46, 79, 86)) 
cuts <- rbind(cuts1,cuts2) 

p3 <- ggplot(data=df, aes(x=val)) + 
  geom_histogram() + 
  geom_vline(data=cuts, 
             aes(xintercept=vals, 
                 linetype=Thresholds, 
                 colour = Thresholds), 
             show.legend = TRUE)
p3
Rplot_barplot

Rplot02_hline

Rplot02_xyz

后记

全是图,和移栽的代码是为总结记录

PS

2020/05/05 22:40
于疫情劳动节假期

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,884评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,212评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,351评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,412评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,438评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,127评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,714评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,636评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,173评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,264评论 3 339
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,402评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,073评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,763评论 3 332
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,253评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,382评论 1 271
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,749评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,403评论 2 358