R語言ggplot2統計作圖

2022-01-08 敗北的異想

收錄於話題 #r語言 1個

艱難掙扎三個月,終於把論文修改完了。應審稿人要求畫了各種各樣的圖,,現總結一下新用到的幾個根據線性混合效應模型結果作圖的代碼(參考Fleur et al., 2021文章中提供的代碼),包括一些細節的設置字體,設置置信區間等等,以備日後不時之需。

假設數據是從一個腦電實驗中採集到的,抽取6個被試的數據,因變量為ERP,自變量為兩個分類變量context type和consistency。

第一步:建模

首先構建線性混合效應模型,因為自變量均為分類變量,為方便模型回歸係數的解讀,在建模之前對自變量編碼(sum coding):

contrasts(demo$consistency) <- c(-0.5,0.5)

contrasts(demo$type) <- c(-0.5,0.5)

此處省略模型比較過程,假設最終模型為:

lm_demo <- lmer(ERP~type*consistency+(1|Filename)+(1|item),data = demo,REML = FALSE)

summary(lm_demo)

**summary結果可以看出主交互效應均不顯著,因此交互效應此時不應該分解,但為了畫圖就先強行分解了

第二步:分解交互作用

emm1 <- emmeans(lm_demo,  "consistency" , by= c("type"),lmer.df = "satterthwaite", adjust = "none")

marg1 <- as.data.frame(emmeans(lm_demo,  "consistency" , by= c("type")))

這裡生成的marg1其實是交互作用分解後的簡單效應:

其中lower.CL和upper.CL就是95%置信區間,可以看出四個置信區間都由負到正包括0,再次證明都不顯著。

Anyway,

繼續做比較:

cont1 <- as.data.frame(contrast(emm1, "tukey"))

這裡就是比較「正常」的交互分解後的結果了,體現為在不同語境類型下,一致條件和不一致條件的差別。

第三步:開始作圖

我們想畫一個不同語境下的一致性效應圖(即不同語境下,不一致和一致條件的差別),需要用到cont1數據表。

p1 <- ggplot(cont1, aes(type, estimate)) +     #縱坐標為不一致減一致的參數值beta

  geom_point(size = 3)+    # 圖表類型為點圖

  #下面開始加置信區間

  geom_hline(yintercept=0, linetype="dashed", color = "grey") +   #置信區間類型為豎線

  geom_errorbar(aes(ymin=estimate-1.96*SE, ymax=estimate+1.96*SE), width=.1)

                                                                                                      # 使用置信區間計算公式

p1

No offense,但在其他參數默認情況下這個圖太醜了.

來美化一下~

1. 坐標軸

首先這個x軸y軸都應該改個名字,並且加粗(如果想給自變量兩個水平改名字也是可行的);

其次,由於置信區間過大,導致整條線上頂天下頂地的,可以把Y軸坐標範圍擴大一些。

p2 <- p1+

  scale_x_discrete(name="type", labels=c("causal"="Causal", "indicative"="Indicative")) +

  scale_y_reverse(name=expression(paste("Voltage (",mu,"V)")), limits = c(5, -5))

+               #y_reverse是將正負顛倒(符合ERP數據匯報的習慣),limites設置刻度範圍

  theme(axis.text.x = element_text(face = "bold"),   

axis.text.y = element_text(face = "bold"))           # 字體加粗

稍微好一些,但是坐標軸字體太小了,而且習慣上一般將英文使用字體設置為Times New Roman

2.字體字號

可以先查看一下系統默認字體都有哪些

輸入 windowsFonts()

  第一個就是Times New Roman,但注意代碼裡不能直接寫Times New Roman,應該寫上面的代號serif(花了好幾天才發現.)

p3 <- p2+

  theme(text=element_text(family="serif", size=22))  

p3

R語言ggplot默認做出來的圖是有灰色背景的,這個也可以去掉,還可以加上框線

3.背景

把背景顏色取消和加框線很簡單,但是注意運行theme_bw()可能會使對字體字號的設置恢復默認,需要重新運行一下上面的代碼,或者直接將這一行加到上面的代碼中去:

p4 <- p3+theme_bw()+

  theme(panel.border=element_rect(fill=NA,color="black", size=1.2, linetype="solid"))                                  #theme()這裡是設置框線的顏色,類型,粗細

這樣這個圖就比較美觀啦~

參考文獻:

Fleur, D. S., Flecken, M., Rommers, J., & Nieuwland, M. S. (2020). Definitely saw it coming? The dual nature of the pre-nominal prediction effect. Cognition, 204, 104335.

相關焦點

  • R語言數據可視化ggplot2包
    ggplot2是R語言最為強大的作圖軟體包,有著自成一派的可視化理念,數據可視化是數據分析的重要一步,讓我們通過由淺入深的掌握數據可視化的精髓。
  • R與生物專題 |第十二講 R作圖-ggplot2繪製箱式圖
    缺口在中位數及其置信區間,該置信區間通常基於中位數+/- 1.58 * IQR / sqrt(n)。缺口用於比較組;如果兩個箱式的缺口不重疊,則有力證明中位數不同。#列印基本箱式圖,即輸入p# 轉置箱式圖p+coord_flip()# 繪製缺口箱式圖ggplot(ToothGrowth, aes(x=dose, y=len))+geom_boxplot(notch=TRUE)# 更改離群值的顏色、形狀和大小ggplot(ToothGrowth, aes(x=dose, y=len))+geom_boxplot(outlier.colour="red", outlier.shape
  • 第十二講:R作圖-ggplot2繪製箱式圖
    函數geom_boxplot()簡化格式為:geom_boxplot(outlier.colour="black", outlier.shape=16, outlier.size=2, notch=FALSE)·Outlier.colour, outlier.shape
  • R|ggplot2(五)|scale 修改默認設置
    作者:dwzb,R語言中文社區專欄作者。知乎專欄:https://zhuanlan.zhihu.com/Data-AnalysisR第一篇戳:R|ggplot2(一)|一個完整的繪圖流程第二篇戳:R|ggplot2(二)|覆蓋柱狀圖各種需求第三篇戳:R|ggplot2(三)|coord 系列函數坐標軸轉換第四篇戳:R|ggplot2(四)|stat_ geom_ 和position
  • R語言繪圖之ggplot2
    那麼今天我們就為大家介紹一下目前在R語言中流行的繪圖包ggplot2。1. ggplot2的安裝:install.packages("ggplot2")。2. ggplot2的繪圖原理: ggplot2的核心理念是將繪圖與數據分離,數據相關的繪圖與數據無關的繪圖分離,並按圖層作圖。
  • R語言作圖:複習
    ##內容摘要##作圖部分的複習
  • R語言 ggplot2 繪圖入門,看完你就理解ggplot2的繪圖邏輯了
    R語言最擅長繪圖。R語言最擅長的繪圖包是ggplot2,由於很多朋友沒有接觸過ggplot2,必須要對其語言方式有個初步的認識。
  • 常用R作圖代碼示例
    另一方面是ggplot2 命令比較直觀易學且可讀性很高,對新手相對友好。然而,很多人在使用ggplot作圖的時候會遇到各種奇怪的報錯,即使google 也總是無法得到合理的解答。本人在自學ggplot2的時候就曾在這個過程當中掙扎很久,故在這裡談一點點人生的經驗希望給為正在自學ggplot2的朋友們一點啟發。
  • 用R語言的ggplot2繪製漂亮的圖形
    ggplot2 包是 Hadly Wickham 開發(除 ggplot2 外,還有 plyr 和 reshape2 包)的一款通過 「+」,以圖層疊加的搭配組合
  • 【R語言】--- ggplot2包的geom_bar()函數繪製柱狀圖
    柱狀圖又叫條形圖,是數據展示最重要的一類統計圖,數據分析結果展示中使用頻率非常高,各類統計軟體均能繪製。在R語言中,有很多包可繪製柱狀圖,比如graphics包barplot()函數和ggplot2包geom_bar()函數。本文介紹ggplot2包的geom_bar()函數繪製柱狀圖。
  • R語言ggplot2:計數圖(Counts Plot)簡單小例子
    但是最後一幅非常漂亮的圖沒有找到對應的代碼,自己也沒有思路應該如何入手;今天刷知乎的時候發現了一篇文章 深度好文 |Matplotlib 可視化最有價值的 50 個圖表(附完整 Python 原始碼), 發現裡面有一張圖和自己沒能畫出來的非常像,才知道這類圖叫計數圖(Counts plot),但是印象裡ggplot2好像沒有現成的函數來做這個事情,在不知如何下手之際突然想到之前看過一篇文章Top 50 ggplot2
  • R語言 高階可視化繪圖系統:ggplot2入門 | 第8講
    更加深入學習ggplot2,請參考《ggplot2: 數據分析與圖形藝術》。目 錄引言:ggplot2基本要素1.統計變換(statistics):統計變換(stat)是對數據進行的某種匯總。例如將數據分組計數以創建直方圖,或將一個二維的關係用線性模型進行解釋。統計變換是可選的,但通常非常有用。標度(Scale):標度(scale)的作用是將數據的取值映射到圖形空間,例如用顏色、大小或形狀來表示不同的取值。
  • Python語言plotnine VS R語言ggplot2
    相對於R中的基礎可視化包,是基於圖形語法的繪圖包,一經提出就迅速受到廣大R語言使用者的喜愛。ggplot2包利用圖層疊加的繪圖方式,往圖像上不斷的添加圖形元素、注釋、統計結果等內容。plotnine庫可以看作是在Python中對ggplot2包的一種實現,方便Python對數據可視化的應用。本文章會分別介紹在R和Python中,如何使用相關的庫進行數據可視化分析。
  • R筆記3:ggplot繪製商務圖表--雜誌級商業圖表
    ,由於以往都是使用Excel作圖,在看ggplot的兩本書時會很困惑,一是書中的例子都是使用系統自帶的數據集,初學者不知道如何換成自己的數據;二是那些數據集都是長數據,而初學者的數據可能都是寬數據,那些代碼無法用。
  • R語言ggplot2科研數據作圖配色的一些小技巧
    首先是創建一份數據集data <- data.frame(  name=letters[1:9],  value=sample(seq(10,20),9))data使用ggplot2默認的配色做一個簡單的柱形圖library(ggplot2
  • R語言畫展ggplot2篇-實用的Q-Q plot
    library(ggplot2)ggplot(mydata, aes(y)) + geom_density()ggplot(mydata, aes(sample = y)) + stat_qq() + stat_qq_line()A: 密度圖
  • R語言作圖實例之boxplot
    我們知道,R語言作圖在統計分析和生物信息學應用當中有著非常重要的地位。
  • R語言ggplot2一幅好看的頻率分布直方圖實例
    讀取數據集 nets_with_weights<-read.csv("nets_with_weights.csv")準備作圖配色 isfahan <- MetBrewer::met.brewer("Isfahan1")length(isfahan
  • R語言統計與繪圖:繪製蜜蜂圖
    在生物信息領域我們常常使用R語言對數據可視化。在對數據可視化的時候,我們需要明確想要展示的信息,從而選擇最為合適的圖突出該信息。本系列文章將介紹多種基於不同R包的作圖方法,希望能夠幫助到各位讀者。1.2. 怎麼繪製蜜蜂圖本次作圖使用兩個不同的包,之所以如此,是因為比較常見的製作蜜蜂圖的包就叫做"beeswarm",但是它和ggplot的作圖習慣略有差別。鑑於之前都是利用ggplot作圖,所以也講解另一個基於ggplot的名叫ggbeeswarm的包。
  • R繪圖大殺器ggplot2入門教程之qplot!
    這是ggplot2作圖比較特殊的一個概念,它把數據按某種規則進行分類,每一類數據做一個圖形,所以最終效果就是一頁多圖margins: 是否顯示邊界geom: 圖形的幾何類型(geometry),這又是ggplot2的作圖概念。ggplot2用幾何類型表示圖形類別,比如point表示散點圖、line表示曲線圖、bar表示柱形圖等。