拿R来画画(六):很漂亮的Cleveland点图
生活随笔
收集整理的這篇文章主要介紹了
拿R来画画(六):很漂亮的Cleveland点图
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
文章目錄
- 簡(jiǎn)單粗暴堆點(diǎn)
- 各點(diǎn)有序上升下降
- 對(duì)樣本分組繪圖
這種圖主要是針對(duì)一一對(duì)應(yīng)的關(guān)系,簡(jiǎn)潔明了,圖形的可讀性很強(qiáng),因?yàn)闂l形圖在空間上是二維的,不容易直觀建立一一對(duì)應(yīng)的變量關(guān)聯(lián)。
簡(jiǎn)單粗暴堆點(diǎn)
library(gcookbook) library(ggplot2) tophit <- tophitters2001[1:25,] head(tophit)| walkela01 | Larry | Walker | Larry Walker | 2001 | 1 | COL | NL | 142 | 497 | ... | 14 | 5 | 82 | 103 | 6 | 14 | 0 | 8 | 9 | 0.3501 |
| suzukic01 | Ichiro | Suzuki | Ichiro Suzuki | 2001 | 1 | SEA | AL | 157 | 692 | ... | 56 | 14 | 30 | 53 | 10 | 8 | 4 | 4 | 3 | 0.3497 |
| giambja01 | Jason | Giambi | Jason Giambi | 2001 | 1 | OAK | AL | 154 | 520 | ... | 2 | 0 | 129 | 83 | 24 | 13 | 0 | 9 | 17 | 0.3423 |
| alomaro01 | Roberto | Alomar | Roberto Alomar | 2001 | 1 | CLE | AL | 157 | 575 | ... | 30 | 6 | 80 | 71 | 5 | 4 | 9 | 9 | 9 | 0.3357 |
| heltoto01 | Todd | Helton | Todd Helton | 2001 | 1 | COL | NL | 159 | 587 | ... | 7 | 5 | 98 | 104 | 15 | 5 | 1 | 5 | 14 | 0.3356 |
| aloumo01 | Moises | Alou | Moises Alou | 2001 | 1 | HOU | NL | 136 | 513 | ... | 5 | 1 | 57 | 57 | 14 | 3 | 0 | 8 | 18 | 0.3314 |
各點(diǎn)有序上升下降
觀察一下上面的圖可以發(fā)現(xiàn),點(diǎn)上升得很凌亂,沒(méi)有規(guī)律。因?yàn)檫@里Y軸是按字母序排列的,我們使用reorder來(lái)重排一下。reorder會(huì)首先將輸入的第一個(gè)參數(shù)轉(zhuǎn)化為因子類(lèi)型,然后根據(jù)第二個(gè)參數(shù)對(duì)其進(jìn)行排序。
根據(jù)上表在theme中調(diào)整主題,這里去掉背景的網(wǎng)格。
ggplot(tophit, aes(x = avg, y = reorder(name, avg))) + geom_point(size = 3) + # 與默認(rèn)主題theme_gray相對(duì),背景空白 theme_bw() + theme(panel.grid.major.x = element_blank(),panel.grid.minor.x = element_blank(), panel.grid.major.y = element_line(colour = 'lightblue', linetype = 'dashed'))顛倒一下順序
ggplot(tophit, aes(x = avg, y = reorder(name, -avg))) + geom_point(size = 3) + # 與默認(rèn)主題theme_gray相對(duì),背景空白 theme_bw() + theme(panel.grid.major.x = element_blank(),panel.grid.minor.x = element_blank(), panel.grid.major.y = element_line(colour = 'lightblue', linetype = 'dashed'))也可以直接X(jué)軸Y軸對(duì)調(diào),此時(shí)引入更多的美化操作,比如X軸的文本傾斜,以及更細(xì)致地調(diào)整點(diǎn)和線(xiàn)條。
ggplot(tophit, aes(x = reorder(name, avg), y = avg)) + geom_point(size = 4, fill = 'lightblue', color = 'lightblue') + # 與默認(rèn)主題theme_gray相對(duì),背景空白 theme_bw() + theme(axis.text.x = element_text(angle = 60,hjust = 1),panel.grid.major.y = element_blank(),panel.grid.minor.y = element_blank(), panel.grid.major.x = element_line(colour = 'orange', linetype = 'dashed', size = 0.8)) + #設(shè)置線(xiàn)段到數(shù)據(jù)點(diǎn)出結(jié)束 geom_segment(aes(xend=name),yend=0,colour='lightblue', size = 1.5)對(duì)樣本分組繪圖
根據(jù)lg和avg對(duì)name進(jìn)行排序,并將其轉(zhuǎn)換為因子水平的level
nameorder <- tophit$name[order(tophit$lg, tophit$avg)] tophit$name <- factor(tophit$name, levels = nameorder) ggplot(tophit, aes(x = avg, y =name)) + geom_segment(aes(yend=name, colour = lg),xend=0, size = 1.5) + # 按顏色分組 geom_point(size = 3, aes(colour = lg)) + scale_color_brewer(palette = "Set1", limits = c("NL", "AL")) + # 與默認(rèn)主題theme_gray相對(duì),背景空白 theme_bw() + theme(panel.grid.major.x = element_blank(),panel.grid.minor.x = element_blank(), panel.grid.major.y = element_blank(), # 將圖標(biāo)移到圖的里面去legend.position=c(1, 0.55), legend.justification =c(1, 0.5))分面圖
ggplot(tophit, aes(x = avg, y =name)) + geom_segment(aes(yend=name),xend=0, size = 1.5, colour = 'grey50') + # 按顏色分組 geom_point(size = 3, aes(colour = lg)) + # 取消guide分組 scale_color_brewer(palette = "Set1", limits = c("NL", "AL"), guide = FALSE) + # 與默認(rèn)主題theme_gray相對(duì),背景空白 theme_bw() + theme(panel.grid.major.x = element_blank(),panel.grid.minor.x = element_blank(), panel.grid.major.y = element_blank())+# 分面圖facet_grid(lg~., scales = "free_y", space = "free_y")總結(jié)
以上是生活随笔為你收集整理的拿R来画画(六):很漂亮的Cleveland点图的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 福建厦门:企业征信报告 可多渠道查询
- 下一篇: 将某个GitLab上的项目同步到另一个G