R筆記7:ggplot繪製商務圖表--地圖上的迷你柱形圖

2021-03-02 Excel圖表之道

本例用ggplot來繪製商業圖表仿的第025號案例,地圖上的迷你柱形圖。

要繪製這種地圖上的小柱形圖,據說可以使用ggsubplot包,不過這裡還是使用原來案例裡的思路來繪製,也很簡單,就是一層一層地去繪製。

作圖思路:先根據地圖文件繪製地圖底圖,再根據各省坐標,一次左右偏移一點,一次右偏移一點,分別繪製兩組誤差線作為柱形圖,誤差線的長度根據兩年指標按比例折算。最後標註省名和百分比數據標籤。

library(maptools)

library(ggplot2)

library(plyr)

china_shp = readShapePoly("c:/rstudy/bou2_4p.shp") # 讀取地圖空間數據

china_map <- fortify(china_shp) #轉化為數據框

#註:這個空間文件裡的地圖默認投影是很扁的,但不能像前面一樣使用coord_map("polyconic")來調整,因為這會影響後面誤差線畫的柱形圖也被扭曲。因此最好能找到默認投影就是polyconic方式、且經緯度仍保持未轉換的空間文件。如哪位朋友有,煩請提供一下,先謝了。

#讀取各省業務數據。只有部分省份。

mydat <- read.csv("c:/rstudy/mapbar.csv")

#讀取省會城市坐標

province_city <- read.csv("c:/rstudy/chinaprovincecity.csv")

#省的業務數據和坐標數據合併。

province_dat <- join(province_city,mydat,type="right")

以上兩步也可以在excel中先準備好,再一次讀取進來。

#分層繪製圖表

ggplot()+

geom_polygon(aes(x=long, y=lat, group=group), data=china_map, fill="beige", colour="grey60") + #畫地圖底圖

geom_errorbar(aes(x=jd-0.5, ymin=wd, ymax=wd+zhibiao2014/max(zhibiao2014, zhibiao2015)*5), data=province_dat, size=5, color="steelblue", width=0, alpha=0.8)+ #誤差線畫柱形圖,x左偏0.5

geom_errorbar(aes(x=jd+0.5, ymin=wd, ymax=wd+zhibiao2015/max(zhibiao2014, zhibiao2015)*5), data=province_dat, size=5,color="orange", width=0, alpha=0.8)+ #誤差線畫柱形圖,x右偏0.5

geom_text(aes(x=jd, y=wd-0.5, label=paste(province, ifelse(changepct >0 ,"▲","▼"), round(changepct,3)*100, "%", sep='')), data=province_dat)+ #標註省名

theme( #清除不需要的元素

panel.grid = element_blank(),

panel.background = element_blank(),

axis.text = element_blank(),

axis.ticks = element_blank(),

axis.title = element_blank()

) +

annotate("text", x=80, y=25, label="● 2014", color= "steelblue", size=8) + #畫圖例

annotate("text", x=80, y=23, label="● 2015", color= "orange", size=8)


要實現上下三角箭頭紅綠分色,可以單獨進行繪製,這裡就略去了。

相比025案例的Excel做法,位置更精準科學,底圖、柱形圖的顏色樣式也都可以方便的自定義,美中不足的是空間文件的投影不佳。不過Excel做法的好處是可以根據數據情況、柱形圖文字的遮擋情況,隨時調整xy數據實現圖形偏移到合適位置。

ExcelPro圖表博客,專注於簡單實用、專業有效的商務圖表溝通方法。轉載請註明出處。

最新Excel商業圖表案例教程見第1季、第2季,屬於中高級程度,適合對E圖表品質要求高的朋友。提供xlsx源文件+pdf圖文教程+在線視頻演示3合1課程,點擊【閱讀原文】了解更多。

---

劉萬祥

微博:@劉萬祥ExcelPro

微信:iamExcelPro

博客:ExcelPro.blog.sohu.com

郵箱:ExcelPro2008@gmail.com

相關焦點

  • R筆記3:ggplot繪製商務圖表--雜誌級商業圖表
    和《圖表之道》之前琢磨商業圖表做法一樣,本帖以製作一個常見的簇狀柱形圖為例,來學習ggplot作圖的過程。85 '04 IV google 186 '05 I google 243、繪製圖表要製作一個簇狀的柱形圖,需要在geom_bar()中指明position="dodge",dodge的意思是避開,那就是繪製成並列的樣子了
  • ggplot2|繪製GO富集柱形圖
    本文利用R語言的ggplot2包,從頭帶您繪製可發表級別的GO富集分析結果圖。利用各種生信工具得到富集分析結果,數據列可能不一致,但關鍵幾列都有。library(ggplot2)data <- read.csv("GO_enrichment_significant.csv",header=TRUE)head(data)參照之前ggplot2使用方法,更改geom即可繪製簡單的bar圖,按照
  • Python-seaborn 基礎圖表繪製-柱形圖(數據分享)
    上期介紹了使用R-ggplot繪製基礎柱形圖的繪製推文,本期按照慣例,我們繼續推出Python 版本的繪製方法,當然我們也是經過美化修飾的結果,畢竟要自己看的過去才行。本期推文主要涉及的知識點如下:Matplotlib inset_locator.inset_axes()自由添加圖片元素Python-seaborn繪製統計直方圖在使用基礎的matplotlib雖然也能繪製出直方統計圖,但面對多類別數據則顯得較為蠻煩,基本系列課程的目的是為了大家系統掌握各種圖表的繪製方法
  • R語言ggplot繪製峰巒圖繪製
    峰巒圖繪製清除當前環境中的變量rm(list=ls())設置工作目錄setwd("C:/Users/Dell/Desktop/R_Plots/19ridge/")使用ggridges包繪製峰巒圖library(ggridges)library(ggplot2)#### Attaching package: 'ggplot2'## The following object is masked from 'package:ggridges':#### scale_discrete_manual# 查看示例數據head
  • R-ggplot2 標準中國地圖製作
    由於基礎圖表繪製系列推文還在加緊準備中,所以這期推文還是對一些感興趣的圖表進行繪製,這期涉及空間圖表繪製,主要涉及知識點如下:ggplot2 + sf 中國標準地圖繪製本期的繪圖我們是按照如下圖表進行繪製的(該圖來自朋友公號):
  • 用R在地圖上繪製網絡圖的三種方法
    R包ggseqlogo |繪製序列分析圖ggplot2高效實用指南 (可視化腳本、工具、套路、配色)ComplexHeatmap |理解繪圖邏輯繪製熱圖R語言可視化學習筆記之ggridges包  ggplot2學習筆記之圖形排列地理網絡圖與傳統的網絡圖不同,當引用地理位置進行節點網絡可視化時,
  • 中了數據可視化的毒:BBC如何使用R語言繪製數據圖表?
    過去一年裡,BBC 視覺與數據新聞(Visual and Data Journalism)團隊的數據記者已經從根本上改變了他們繪製發表在 BBC 新聞網站上的數據圖表的方式。我們將在這篇文章中介紹我們如何以及為何要使用 R 語言的 ggplot2 軟體包來創建可直接使用的圖表,我們也會給出我們的流程和代碼以及分享我們一路上所學到的東西。
  • 學術圖表的基本配色方法
    Excel 2016繪圖默認配色就是圖1-3-1(a)中的「自定義1」顏色主題,如圖1-3-1(c)中淡藍色方框所示。其實,在圖1-3-1(c)的顏色主題中,有許多衍生的顏色主題,包括彩色和單色兩種類型供選擇。利用圖1-3-1(c)的顏色主題繪製的效果圖,如圖1-3-4所示。
  • ggplot2繪製面積圖
    繪製圍繞x軸創建對稱的面積圖。colorspace::lighten(.2)) +  labs(title = "Box office per genre 1977-2019",       x = NULL,       y = "Current dollars, billions")下面來個實際的例子,使用tidytuesday提供的數據來繪製肯亞各縣的不同水源的分布圖
  • Python-Matplotlib 動態柱形圖繪製(數據分享)
    這期開始,我們將公眾號剛開始的不成熟風格文章推文改成與現在相統一的風格,同時也為了解決大家複製不了代碼的問題,本期推文,將介紹使用Python-matplotlib 繪製動態柱形圖的教程推文,主要涉及的知識點如下:matplotlib的animation模塊製作動態圖animation
  • R語言繪製條形圖
    熟悉R語言的用戶應該都可以熟練的繪製條形圖,但在實際應用中,我們常常會根據數據展示的需求對條形圖進行調整,這就需要我們花費大量時間了解條形圖繪製函數的一些參數及高級方法。基於此,本文整理出一些常用的條形圖繪製代碼,希望可以為大家帶來一些方便。
  • 手把手教你使用ggplot2繪製中國地圖
    自從用了ggplot2包,越來越覺得其博大精深,通過圖層的概念可以繪製豐富的可視化圖形,如常見的散點圖、直方圖、條形圖、折線圖等。今天就教大家如何使用ggplot2實現地圖的繪製,以及如何在地圖中加入氣泡圖和條形圖。本文所使用的數據來自於經管之家moonstone作者提供的流行病學樣本數據。有關地理信息數據可至文後的下載連結。
  • 學會這3步,輕鬆做出專業的Excel商務圖表
    或許很多人會說,Excel圖表製作很簡單,就是菜單欄插入,然後選擇圖表就可以了。常用的也就是四大件:柱形圖、折線圖、餅圖、條形圖。事實真的是這樣的嗎?報告需要的直方圖、瀑布圖,甘特圖,柏拉圖,漏鬥圖.這些你都會嗎?你知道哪些數據的展現應該用哪種圖表嗎?
  • R語言 | R語言繪製抖動散點圖和蜂群圖
    ggplot2包繪製兩種特殊的散點統計圖,抖動散點圖(jitter plot)和蜂群圖((beeswarm plot)。 接下來,繪製簡單的統計圖對該數據集進行可視化,以初步查看哪種藥物治療方案更為有效。通常,我們會首選繪製箱線圖、提琴圖或者柱形圖等來展示整體概況,它們包含分位數或者均值等信息,以便初步觀察和比較各藥物治療組的療效的差異。但如果也想將每個個體的響應狀態呈現出來,就需要在圖中添加散點表示每個患者個體,參考以下示例。
  • Origin繪製分組堆積柱形圖
    顯示單個項目佔整體的百分比大小有多種方式,除了之前教大家的餅圖,還可以使用百分比堆積柱形圖。軟體:Origin導入到Origin工作表後如下,注意,導入到工作表的數據為原始數值,不是佔比,當繪製堆積柱形圖時,軟體會根據數據自動計算佔比。
  • R語言可視化——ggplot圖表配色技巧
    今天跟大家分享ggplot圖表的配色原理與基本技巧。
  • Excel圖表製作:柱形圖和折線圖的組合圖案例
    作為EXCEL中非常重要的功能,今天給大家介紹一個柱形圖和折線圖的組合圖案例。如下圖數據源,是某一時間段6個銷售員工的銷售數據。現在需要在柱形圖上顯示銷售數據的平均線,並讓大於平均值和小於平均值的數據顯示不同的顏色。並且當數據變動的時候,平均值和數據系列都會隨之變動。
  • 在Python中使用ggplot2風格及語法: plotnine與ggplot|可視化系列05
    基礎散點圖繪製效果繪圖效果如上,繪製了反映x-y關係的散點圖,把第三句的pn改為gg就是ggplot庫的實踐了,具體來看下第三句,pn.ggplot(df,pn.aes(x='x',y='y'))新建一個ggplot
  • R語言繪製抖動散點圖和蜂群圖
    本篇通過R語言自帶的一個小數據集,展示使用ggplot2包繪製兩種特殊的散點統計圖,抖動散點圖(jitter plot)和蜂群圖((beeswarm
  • R語言可視化——ggplot圖表中的線條
    不要覺得專門為線條寫一章推送有點小題大做,其實線條對於圖表而言,功不可沒,即便是不起眼的網格、軸線、或者線條的粗線、線型、磅數等都將決定著你的圖表品質。R語言中ggplot函數系統中涉及到線條的地方有很多,最常見的場景就是我們做geom_line()(折線圖)、geom_path()(路徑圖),以及圖表的繪圖區(panel)、圖表區、網格系統(grid)中所涉及到的線條。今天以一個折線圖為例,簡要說明ggplot函數中關於線條的主要參數及其效果。