R語言ggplot2做簇狀柱形圖並添加誤差線的一個完整示例

2021-12-29 小明的數據分析筆記本
本文是回答B站關注者的提問,他的問題如下

原始數據存儲在一個excel文件裡,這個excel文件裡有三個子表格,每一個子表格的數據如下:

image.png

總的數據格式

image.png

現在的需要是做如下的圖

image.png

接下來就介紹如何利用原始數據到最終的圖的ggplot2的代碼

首先是將3個子表格的數據整理到一張表格裡

比如這裡我新建了一個子表格sheet4,數據最終的格式如下(原始數據裡第一列的編號是沒有用的,可以直接刪掉)

image.png

接下來R語言裡操作

首先是讀取數據
library(readxl)
df<-read_excel("prac.xlsx",
               sheet = "sheet4")
df

將寬格式轉換為長格式
library(tidyverse)
df %>% 
  pivot_longer(!var4) -> new_df
new_df

定義誤差線函數

這裡用到的是標準誤

ebtop<-function(x){
  return(mean(x)+sd(x)/sqrt(length(x)))
}
ebbottom<-function(x){
  return(mean(x)-sd(x)/sqrt(length(x)))
}

ggplot2作圖
library(ggplot2)

ggplot(data=new_df,aes(x=name,y=value,fill=var4))+
  stat_summary(geom = "bar",fun = "mean",
               position = position_dodge(0.9))+
  stat_summary(geom = "errorbar",
               fun.min = ebbottom,
               fun.max = ebtop,
               position = position_dodge(0.9),
               width=0.2)+
  scale_y_continuous(expand = expansion(mult = c(0,0.1)))+
  theme_bw()+
  theme(panel.grid = element_blank())+
  scale_fill_manual(values = c("#e20612","#ffd401","#00b0eb"),
                    name="")+
  labs(x="XXXXX",y="YYYYY")

image.png調整不同分組之間的順序
new_df$name<-factor(new_df$name,
                    levels = c("var2","var3","var1"))

ggplot(data=new_df,aes(x=name,y=value,fill=var4))+
  stat_summary(geom = "bar",fun = "mean",
               position = position_dodge(0.9))+
  stat_summary(geom = "errorbar",
               fun.min = ebbottom,
               fun.max = ebtop,
               position = position_dodge(0.9),
               width=0.2)+
  scale_y_continuous(expand = expansion(mult = c(0,0.1)))+
  theme_bw()+
  theme(panel.grid = element_blank())+
  scale_fill_manual(values = c("#e20612","#ffd401","#00b0eb"),
                    name="")+
  labs(x="XXXXX",y="YYYYY")

image.png調整組內柱子之間的順序
new_df$var4<-factor(new_df$var4,
                    levels = c("group2",
                               "group3",
                               "group1"))
ggplot(data=new_df,aes(x=name,y=value,fill=var4))+
  stat_summary(geom = "bar",fun = "mean",
               position = position_dodge(0.9))+
  stat_summary(geom = "errorbar",
               fun.min = ebbottom,
               fun.max = ebtop,
               position = position_dodge(0.9),
               width=0.2)+
  scale_y_continuous(expand = expansion(mult = c(0,0.1)))+
  theme_bw()+
  theme(panel.grid = element_blank())+
  scale_fill_manual(values = c("#e20612","#ffd401","#00b0eb"),
                    name="")+
  labs(x="XXXXX",y="YYYYY")

image.png

這裡新學到一個知識點是,柱子默認是不貼底的,如果要貼底使用函數scale_y_continuous(expand = expansion(mult = c(0,0.1)))

mult對應的兩個值一個是控制下面,一個是控制上面,貼底就設置為0 就可以了


還有一個知識點是 expand.grid(x=c(1,2,3),y=c(4,5,6)) 可以生成兩兩配對的數據

如果需要示例數據和代碼的話,可以給推文打賞1元。如果沒有收到我的回覆,可以添加我的微信mingyan24催我

歡迎大家關注我的公眾號

小明的數據分析筆記本

小明的數據分析筆記本 公眾號 主要分享:1、R語言和python做數據分析和數據可視化的簡單小例子;2、園藝植物相關轉錄組學、基因組學、群體遺傳學文獻閱讀筆記;3、生物信息學入門學習資料及自己的學習筆記!

相關焦點

  • 跟著Nature microbiology學畫圖~R語言ggplot2畫柱形圖
    期刊是 Nature microbiologyimage.png今天重複的圖片是Figure3中的柱形圖首先是第一個小圖:柱形圖,誤差棒,顯著性P值第一步是模擬數據image.png數據是三列:第一列用來做X,第二列做Y,第三列做誤差條讀入數據
  • 跟著Nature Genetics學畫圖:R語言ggplot2畫折線圖並添加誤差線
    折線圖添加誤差線是非常常用的一種可視化方法,今天的推文介紹一下使用R語言的ggplot2作圖的代碼。
  • R語言——ggplot2的繪圖邏輯
    在R語言裡,談及繪圖,ggplot2是最出名的繪圖包之一,作為一個繪圖神器,它提供了許許多多的功能給用戶使用,僅用短短幾行代碼,一幅幅高端大氣的圖像便躍然紙上,這可能就是ggplot2包的魅力所在。描述幾何對象函數描述geom_abline 線,由斜率和截距指定geom_jitter     點,自動添加了擾動geom_area   面積圖geom_line 線geom_bar
  • 惠圖軟體通||原來,柱形圖也可以做得很高大上!
    ,而且還常常用來展示對比的關係,因此柱形圖深受Excel各類用戶的喜愛。然而,很多小白用戶甚至中級用戶做出的Excel柱形圖往往很low,不夠高大上,甚至有些圖表還做不到準確展示圖表的真實信息。一張圖表(Chart),或又稱為統計圖表,代表了一張圖像化的數據,並經常以所用的圖像命名,例如圓餅圖,是主要使用圓形符號,長條圖或直方圖,則主要使用長方形符號。折線圖,意味著使用線條符號。
  • excel如何繪製二維簇狀條形圖
    我們依然拿學科分數來做個例子,如下圖,語文、英語數學三科的最高分和最高分來對比,分分分學生的命根,我覺得我小時候學習也不錯啊,到現在也沒搞出點事情來。2、選中數據,點插入下的【插入柱形圖或條形圖】,拉到最下面,找到【更多柱形圖】3、這一步需要多注意,你是直接找不到「簇狀條形圖的」,我們要先找到【條形圖】,點開【條形圖】後,在裡面就找到「簇狀條形圖」了,選中後點確定(這句好像是我多說的,都知道點確定啊)。
  • 漂亮的折線柱形圖,原來是這麼做的!
    如何製作漂亮的折線柱形圖。效果圖:製作這張圖表,主要在於對圖表的美化,下面一同來看看相關的製作步驟:第一步:插入圖表選中數據區域,點擊插入——圖表——簇狀柱形圖,隨後再複製數據區域並粘貼到圖表第三步:更改柱形圖寬度和顏色選中圖形,右擊選擇「更改數據系列格式」,這裡將「間隙寬度」設置為「14%」,隨後點擊格式,選擇一種填充顏色即可。
  • 一文讀懂ggplot2數據可視化
    因此,本質上,ggplot2代碼是用R語言實現的一種繪圖語言。ggplot2所用的繪圖語言,主要是按照Wilkinson(2005)的設想實現的。 ggplot2的geom組件ggplot()代碼段只定義數據展示的邏輯關係,並不直接繪圖。要用ggplot2繪圖,還必須為其添加各種基本圖形組件。
  • R語言ggplot2科研數據作圖配色的一些小技巧
    首先是創建一份數據集data <- data.frame(  name=letters[1:9],  value=sample(seq(10,20),9))data使用ggplot2默認的配色做一個簡單的柱形圖library(ggplot2
  • R語言繪製分組柱狀圖示例
    ggplot2繪製帶誤差線以及顯著性標記的分組柱狀圖    簡介了堆疊柱狀圖,順便再簡介一下分組柱狀圖在R中的繪製。
  • R筆記7:ggplot繪製商務圖表--地圖上的迷你柱形圖
    要繪製這種地圖上的小柱形圖,據說可以使用ggsubplot包,不過這裡還是使用原來案例裡的思路來繪製,也很簡單,就是一層一層地去繪製。作圖思路:先根據地圖文件繪製地圖底圖,再根據各省坐標,一次左右偏移一點,一次右偏移一點,分別繪製兩組誤差線作為柱形圖,誤差線的長度根據兩年指標按比例折算。最後標註省名和百分比數據標籤。
  • 【ggplot2】為條形圖和折線圖添加誤差線
    ggplot2隻能處理 data.frame數據,每列作為一個變量,是一個指標.繪製帶有誤差線和95%置信區間線的折線圖和點圖# 帶有標準誤差線的折線圖# Standard error of the meanggplot(tgc, aes
  • R語言ggplot2折線圖(line plot)添加置信區間(CI)展示學術論文作者數量的變化趨勢
    包抓取了 Plos 系列的6本期刊的2006年至2013年的每篇論文裡的作者數量 進行可視化展示原文連結是https://benjaminlmoore.wordpress.com/2014/04/06/author-inflation-in-academic-literature/完整的代碼連結
  • 如何製作帶上升下降箭頭的Excel柱形圖?
    2、然後選擇A1:D8區域的數據(不要把E列也選進去了),點擊選項卡上面的插入,選擇一個簇狀柱形圖,如下所示:3、選擇圖表,點擊選項卡上面的圖表工具中的設計,更改圖表類型>然後更改圖表類型為組合,將銷量設置為簇狀柱形圖,將輔助1設置為堆積柱形圖,同時勾選次坐標軸,然後將輔助2設置為折線圖,如下所示:4、對輔助1系列進行設置,我們通過雙擊圖表上面的柱形圖調出設置數據系列格式,在系列選項裡面選擇,系列輔助1將分類間距調整為
  • 散點圖和誤差線結合能做什麼?
    在往期文章不等寬柱形圖中,筆者講述過,如何通過構建數據來製作不等寬柱形圖,本期筆者給各位帶來如何使用散點圖和誤差線製作不等寬柱形圖。」是「申請量」的數據,「誤差線Y軸的負偏差」是當前申請量減去下一個申請量的數據。
  • Python語言plotnine VS R語言ggplot2
    R語言ggplot2數據可視化圖像1針對上面的圖像,在Python中可使用下面的程序進行數據可視化:## 顯示高清圖%config InlineBackend.figure_format = 'retina'## 導入相關庫和模塊import pandas as pdimport numpy as npfrom plotnine import
  • R語言筆記:用barplot()函數繪製酷炫的柱形圖
    R語言是一門統計語言。R既可以用來做數據的處理,又可以用來繪製各種各樣簡單的、複雜的可視化圖表。
  • 是Excel的圖,不!是R的圖
    作者主頁:https://github.com/BruceZhaoRexcel作為一個強大的統計工具,自身包含著一部分數據可視化的功能。R作為可視化的大勢,自然也可以畫出這些圖,有一篇就通過ggplot2包進行了部分總結,甚是有趣,小編復刻學習了一番,現對代碼做簡單注釋,以作分享。
  • Excel圖表實戰技巧:為圖表添加誤差線
    誤差線是指用圖形的方式表示每個數據點的變化範圍,誤差線只能添加到二維的面積圖、條形圖、柱形圖、折線圖、XY散點圖和氣泡圖。Excel圖表提供了4種常用的誤差線,添加和設置誤差線的方法步驟如下。步驟一:單擊選取圖表,然後在」圖表工具「」布局「選項卡中,單擊「誤差線「」標準誤差誤差線「命令,為柱形圖添加標準誤差誤差線,如圖所示。標準誤差誤差線的中心與數據系列的數值相同,正負偏差為對稱的數值,並且所有的數據點的誤差量數據均相同。如果數據系列的各個數據點數值波動越大,則標準誤差越大。如果數據系列的各個數據點值相同,則標準誤差為0。
  • Excel圖表製作:柱形圖和折線圖的組合圖案例
    作為EXCEL中非常重要的功能,今天給大家介紹一個柱形圖和折線圖的組合圖案例。如下圖數據源,是某一時間段6個銷售員工的銷售數據。現在需要在柱形圖上顯示銷售數據的平均線,並讓大於平均值和小於平均值的數據顯示不同的顏色。並且當數據變動的時候,平均值和數據系列都會隨之變動。
  • Excel圖表學習13:在柱狀圖或折線圖中添加水平或垂直線(使用誤差線)
    可以添加一個新系列,將其應用到次要坐標軸,並使次要坐標軸不可見;也可以使用直線誤差線而不是兩點之間的連線。 在《Excel圖表學習12:在柱狀圖或折線圖中添加水平或垂直線(使用新系列)》一文中,詳細介紹了如何使用新系列添加水平或垂直線。