深圳做app網(wǎng)站建設(shè)seo研究中心vip課程
簡介
書接adjustText實(shí)踐——調(diào)整matplotlib散點(diǎn)圖標(biāo)簽,避免重復(fù)
上文中,matplotlib+adjustText對(duì)于我的實(shí)例來說并沒有起到很好的效果。所以,博主決定在R中利用gglot2+ggrepel繪制,期待效果。
操作過程
博主不常使用R,在此過程中詳細(xì)記錄每一步驟,以作備忘。
1. R讀取數(shù)據(jù)(openxlsx)
library(openxlsx)fossils = read.xlsx("D://Work_Space/mahonia/1-化石記錄/2023-3-17-Mahonia_fossils_leaf.xlsx")
2. 繪制散點(diǎn)圖(ggplot2)
2.1 快速繪制散點(diǎn)圖(plot)
library(ggplot2)plot(fossils$Lon, fossils$Lat)
2.2 geom_point()
library(gcookbook)
library(dplyr)ggplot(data = fossils %>% select(Lon, Lat), aes(x=Lon, y=Lat)) + geom_point()
2.3 分組展示(分型和年齡)
library(openxlsx)fossils <- read.xlsx("D://Work_Space/mahonia/1-化石記錄/2023-3-17-Mahonia_fossils_leaf.xlsx")simple_fossils <- fossils %>% select(Genus, Name, Epoch, Lon, Lat, Group)
library(ggplot2)# plot(fossils$Lon, fossils$Lat)library(gcookbook)
library(dplyr)ggplot(data = simple_fossils %>% select(Lon, Lat, Group, Epoch), aes(x=Lon, y=Lat, shape=Group, color=Epoch)) + geom_point()
2.4 添加文本注釋(geom_text())
ggplot(data = simple_fossils %>% select(Lon, Lat, Group, Epoch, Name), aes(x=Lon, y=Lat, shape=Group, color=Epoch)) + geom_point() + geom_text(aes(label = Name), size = 2)
3. 優(yōu)化文本注釋位置(ggrepel)
library(ggrepel)ggplot(data = simple_fossils %>% select(Lon, Lat, Group, Epoch, Name), aes(x=Lon, y=Lat, shape=Group, color=Epoch)) + geom_point() + geom_text_repel(aes(label = Name), size = 3)
可以看到有許多標(biāo)簽沒有顯示出來。
嘗試減小字體
ggplot(data = simple_fossils %>% select(Lon, Lat, Group, Epoch, Name), aes(x=Lon, y=Lat, shape=Group, color=Epoch)) + geom_point() + geom_label_repel(aes(label = Name), size = 1)
根據(jù)警示信息,增加max.overlaps
ggplot(data = simple_fossils %>% select(Lon, Lat, Group, Epoch, Name), aes(x=Lon, y=Lat, shape=Group, color=Epoch)) + geom_point() + geom_label_repel(aes(label = Name), size = 2, max.overlaps = 30)
效果也不行,還是擠在一起。
4. 繪制世界地圖
4.1 地圖
world <- map_data("world")world_map <- ggplot() + geom_map(data = world, map=world, aes(x=long, y=lat, map_id=region),color = "black", fill = "lightgray", size = 0.1)+scale_x_continuous(breaks = seq(-180, 210, 45), labels = function(x){paste0(x, "°")}) +scale_y_continuous(breaks = seq(-60, 100, 30), labels = function(x){paste0(x, "°")})world_map
4.2 散點(diǎn)地圖
world_map + geom_point(data = simple_fossils %>% select(Lon, Lat, Group, Epoch, Name), aes(x=Lon, y=Lat, shape=Group, color=Epoch))
4.2 合理調(diào)整文本
world_map + geom_point(data = simple_fossils %>% select(Lon, Lat, Group, Epoch, Name), aes(x=Lon, y=Lat, shape=Group, color=Epoch)) + geom_label_repel(data=simple_fossils %>% select(Lon, Lat, Group, Epoch, Name), aes(x=Lon, y=Lat, label=Name, color=Epoch,fontface="italic"), size=2, max.overlaps = 100, box.padding = 0.4, label.padding = 0.1)
后記
經(jīng)過一番努力,達(dá)到的效果比python繪圖要好一些。但是在保存圖片時(shí)卻不如python。后面再努努力吧。