R语言绘图:实用脑科学数据可视化包

文章来源于微信公众号(茗创科技),欢迎有兴趣的朋友搜索关注。


导读

本文整理了R语言绘图中使用频率较高的程序包,每个程序包都附载相应的参考来源链接(链接里有实现绘图的脚本)和下载链接。另:茗创科技为大家提供免会员极速下载服务,需要相应程序包的小伙伴可以私信茗创科技周翊工程师,微信号MCKJ-zhouyi或17373158786。

gganimate:在R中绘制动态图

gganimate在CRAN上可通过install.packages('gganimate')来安装。如果要安装开发版本,可以直接使用devtools从github安装:

# install.packages('devtools')

devtools::install_github('thomasp85/gganimate')

示例1 及其代码

library(ggplot2)

library(gganimate)

ggplot(mtcars, aes(factor(cyl), mpg)) +

  geom_boxplot() +

  # Here comes the gganimate code

  transition_states(

    gear,

    transition_length = 2,

    state_length = 1

  ) +

  enter_fade() +

  exit_shrink() +

  ease_aes('sine-in-out')

示例2及其代码

library(gapminder)

ggplot(gapminder, aes(gdpPercap, lifeExp, size = pop, colour = country)) +

  geom_point(alpha = 0.7, show.legend = FALSE) +

  scale_colour_manual(values = country_colors) +

  scale_size(range = c(2, 12)) +

  scale_x_log10() +

  facet_wrap(~continent) +

  # Here comes the gganimate specific bits

  labs(title = 'Year: {frame_time}', x = 'GDP per capita', y = 'life expectancy') +

  transition_time(year) +

  ease_aes('linear')

IPWboxplot:如何绘制缺失值的箱型图

IPW.boxplot函数使用IPW分位数绘制适用于丢失数据修改后的箱线图。应用该函数会得到一个统计概括列表。默认情况下,使用该函数得到经过调整的箱线图和通过逆概率加权计算的统计数据。

ggplot2:用图形语法绘制精美数据图的程序包

ggplot2的核心理念是将绘图与数据分离,数据相关的绘图与数据无关的绘图分离,是按图层作图,有利于结构化思维,同时它保有命令式作图的调整函数,使其更具灵活性,绘制出来的图形美观,同时避免繁琐细节。

更多创新思路,可以查看ggplot2中丰富的扩展生态系统。也能给自己提供更多绘图灵感。

Corrplot:绘制相关矩阵可视化图

Corrplot使用起来非常方便,并提供了可视化方法、图形布局、颜色、文本标签等丰富的绘图选项。此外,还提供p值和置信区间,以帮助我们确定相关性的统计显著性。

handyplots:快速绘制散点图、Q-Q图、箱型图、残差图、置信区间等

以下是handyplots程序包的使用手册,搭配作图过程使用。

OutliersO3:绘制数据集中的异常值O3图

OutliersO3能够识别数据集变量中所有组合的潜在异常值。下面这张图是来自Election(2005)数据集的四个变量的平行坐标图。

# Prepare O3plot results

library(OutliersO3)

data(Election2005)

data <- Election2005[, c(6, 10, 17, 28)]

O3p <- O3prep(data, method=c("HDo", "PCS", "BAC", "adjOut", "DDC", "MCD"))

O3p1 <- O3plotM(O3p)

#Create and add the new highlighting variable to the dataset

ty <- O3p1$outsTable %>% filter(Combination=="c1111")

ouFx <- data

ouFx$oh <- rep(0, nrow(data))

ouFx[ty$Case,"oh"] <- "A"

#Use plotting code from O3plotM

n1 <- ncol(data)

ouFx <- ouFx %>% mutate(alev = ifelse(oh == 0, 0.5, 1))

gp <- ggparcoord(ouFx %>% arrange(oh), scale = "uniminmax", columns=1:n1,

groupColumn="oh", alphaLines="alev") + labs(x = NULL, y = NULL) +

scale_colour_manual(values = c("grey70", "red")) +

theme(plot.title = element_text(size = 18, hjust = 0.5),

legend.position = "none", axis.ticks.y = element_blank(),

axis.text.y = element_blank())

gp

rainbow:条形图、箱型图、彩虹图绘制

该图来自Han Lin Shang和Rob J Hyndman提出的一些新的工具来可视化功能数据和识别功能异常值。利用了稳健的主成分分析、数据深度和最高密度区域。

lattice:高级绘图系统

lattice绘图灵感来自于网格图,强调多变量数据。网格图形函数从一个可自定义的“设置”列表中获取各种图形参数(颜色、行类型、字体等)的默认值。

图片来自于书籍《Lattice: Multivariate Data Visualization with R》Chapter14 Figure14.2

brainGraph:大脑MRI数据的图论分析

brainGraph用于执行图论分析的MRI数据。使用Freesurfer分析数据(皮层厚度、体素、局部褶皱指数、表面积)、弥散张量束成像数据(例如,来自FSL)和静息态fMRI数据(例如,来自DPABI)。brainGraph包含一个用于图形可视化和数据探索图形用户界面,以及用于生成有用图形的几个函数。

brainR:绘制大脑影像的‘misc3d’和‘rgl’包

brainR包括使用‘WebGL’,‘rgl’和‘JavaScript’命令创建3D和4D图像的功能。这个包依赖于X工具包( X toolkit:‘XTK’)。

图片来自于文章G. Grabner, A. L. Janke, M. M. Budge, D. Smith, J. Pruessner, and D. L. Collins, "Symmetric atlasing and model based segmentation: an application to the hippocampus in older adults", Med Image Comput Comput Assist Interv Int Conf Med Image Comput Comput Assist Interv, vol. 9, pp. 58-66, 2006.R

vioplot:小提琴图

vioplot是箱图和核密度图的组合,该包可以自定义设置,可以画出非常漂亮的小提琴图。


WVPlots:绘制常见数据的可视化图

WVPlots包是在‘ggplot2’和‘plotly’上实现标准化调用接口下的数据分析图。感兴趣的图包括:‘ROC曲线’、增益曲线、带有边际分布的散点图、带有边际密度的条件散点图、带有匹配理论分布的箱图和茎叶图、以及匹配理论分布的密度图。

treemapify:在ggplot2中绘制树状图

在treemap中,每个拼图代表一个单独的观察部分,拼图的面积与变量成比例。以“G20峰会”为例,每个拼图代表一个国家。拼图面积反应了该国的GDP,而拼图的填充颜色反应了HDI(人类发展指数)。还可以将其制作成随年限变化的动图,具体请参见参考来源附上的网址。

gplots:绘制可视化数据的各种R编程工具

gplots包含绘制数据的各种R编程工具,如计算和绘制局部平滑的汇总函数(‘bandplot’,‘wapply’),标准绘制的增强版本(‘barplot2’,‘boxplot2’,‘heatmap.2’,‘smartlegend’),颜色设置(‘col2hex’,‘colorpanel’,‘redgreen’,‘greenred’,‘bluered’,‘redblue’,‘rich.colors’),计算和绘制二维数据汇总(‘ci2d’,‘hist2d’), 回归诊断图(‘lmplot2’,‘residplot’)等。

图片来自于文章Robust locally weighted regression and smoothing scatterplots,<加权回归和平滑散点图>。

plotly:基于web的ggplot2交互地图

通过‘plot .js’创建交互式Web图形。Plotly的R图形库可以制作交互式的、具有出版质量的图形。图库中有关于制作条形图、散点图、面积图、误差条形图、直方图、热图、子图、多轴和3D(基于WebGL)的图形示例。如下:

spacesRGB:标准和用户自定义的RGB颜色工具

标准RGB包括sRGB,‘Adobe’RGB,‘ProPhoto’RGB,BT.709等。用户自定义的RGB空间也是可以的。部分支持ACES颜色工作流。

r2d3:D3绘制可视化图形的工具

利用D3进行数据的动态和交互式的可视化。使用r2d3,需要编写一个D3脚本,然后使用r2d3()函数传递R数据。例如,利用下面的一个简单的D3脚本绘制如下图所示的条形图(“barchart.js”)。

// !preview r2d3 data=c(0.3, 0.6, 0.8, 0.95, 0.40, 0.20)

var barHeight = Math.floor(height / data.length);

svg

  .selectAll("rect")

  .data(data)

  .enter()

  .append("rect")

  .attr("width", function (d) {

    return d * width;

  })

  .attr("height", barHeight)

  .attr("y", function (d, i) {

    return i * barHeight;

  })

  .attr("fill", "steelblue");

ezplot:常见图表绘制函数集

使用ezplot可以快速创建演示图表,这对于探索性数据分析也十分有用。一般情况下,ezplot函数为x、group、facet_y和facet_x的重复类别聚合多个y值。

iheatmapr:可绘制复杂的、交互式的热图

iheatmapr是一个用于绘制复杂且交互式的热图R包,它可以实现沿主热图的行或列的子图添加关于每一行或每一列的更多信息。虽然已经有很多很棒的R包来制作热图,包括相对简单的交互式热图(heatmaply和d3heatmap)或复杂的静态热图(ComplexHeatmap),但iheatmapr能够让复杂的交互式热图的绘制变得简单。

library(iheatmapr)

data(measles, package = "iheatmapr")

main_heatmap(measles, name = "Measles<br>Cases", x_categorical = FALSE,

            layout = list(font = list(size = 8))) %>%

  add_col_groups(ifelse(1930:2001 < 1961,"No","Yes"),

                  side = "bottom", name = "Vaccine<br>Introduced?",

                  title = "Vaccine?",

                  colors = c("lightgray","blue")) %>%

  add_col_labels(ticktext = seq(1930,2000,10),font = list(size = 8)) %>%

  add_row_labels(size = 0.3,font = list(size = 6)) %>%

  add_col_summary(layout = list(title = "Average<br>across<br>states"),

                  yname = "summary")  %>%               

  add_col_title("Measles Cases from 1930 to 2001", side= "top") %>%

  add_row_summary(groups = TRUE,

                  type = "bar",

                  layout = list(title = "Average<br>per<br>year",

                                font = list(size = 8)))

ggplotgui:通过GUI创建ggplot

ggplotgui可通过ggplot_shiny()函数来创建和优化ggplot2图形,并能够产生要求的R代码。

————————————————

版权声明:本文为CSDN博主「茗创科技」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,607评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,047评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,496评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,405评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,400评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,479评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,883评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,535评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,743评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,544评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,612评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,309评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,881评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,891评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,136评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,783评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,316评论 2 342

推荐阅读更多精彩内容