# R问题｜数值模拟流程记录和分享

## 简介

all_function.r缩略图

## 工作流程

### 2. 在每个 R 脚本中存储所有 Rdata 和数据集

```write.xlsx(sheets, paste("./data/latex/sigma",sigma,"new2/R",numbers,"_",nums,"_",it,".xlsx",sep=""),
colNames = T, rowNames = T)
save.image(paste("./data/latex/sigma",sigma,"new2/R",numbers,"_",nums,"_",it,".Rdata",sep=""))
```

### 3. 新建了一个R脚本,绘制图形

• `plot_5_methods`功能：使用 `ggplot2` 包绘制一个数据集中某一列参数（`b/c/d/sigma`）的图形。
```plot_5_methods = function(dat = b_data){
plot_5 = ggplot(dat,aes(class,value,fill = class)) +
geom_boxplot(na.rm = T) +
# scale_fill_viridis(discrete = TRUE, alpha=0.6) +
stat_summary(fun.y=mean, na.rm=T, geom="point", shape=21, size=2, fill="red",color="red") +
# geom_jitter(color="black", size=0.4, alpha=0.9) +
# geom_hline(yintercept = yline) +
theme_bw() +
theme(
legend.position="none",
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
plot.title = element_text(size=11)
) +
ylab("") +
xlab("")
return(plot_5)
}
```
• `all_plot_compare` 功能：绘制一个数据集所有列，并将其横向合并，结果如下所示：
```all_plot_compare = function(data1 = all_data_0.3,str1 = c(0, 3.5,0, 1,0, 10,0, 1.5)){
## b
b_data = data.frame("class" = factor(rep(c("GH","TS","BT","Pooled","Fixed"),each = dim1),
levels = c("GH","TS","BT","Pooled","Fixed")),
"value" = c(data1[,1],data1[,5],data1[,9],data1[,13],data1[,17]))
b_plot = plot_5_methods(dat = b_data) +
geom_hline(yintercept = b,linetype = 3) +
scale_y_continuous(limits = str1[1:2]) +
xlab(expression(b)) +
scale_fill_manual(values = col1)
## c
c_data = data.frame("class" = factor(rep(c("GH","TS","BT","Pooled","Fixed"),each = dim1),
levels = c("GH","TS","BT","Pooled","Fixed")),
"value" = c(data1[,2],data1[,6],data1[,10],data1[,14],data1[,18]))
c_plot = plot_5_methods(dat = c_data) +
geom_hline(yintercept = c,linetype = 3) +
scale_y_continuous(limits = str1[3:4]) +
xlab(expression(c)) +
scale_fill_manual(values = col1)
## d
d_data = data.frame("class" = factor(rep(c("GH","TS","BT","Pooled","Fixed"),each = dim1),
levels = c("GH","TS","BT","Pooled","Fixed")),
"value" = c(data1[,3],data1[,7],data1[,11],data1[,15],data1[,19]))
d_plot = plot_5_methods(dat = d_data) +
geom_hline(yintercept = d,linetype = 3) +
scale_y_continuous(limits = str1[5:6]) +
xlab(expression(d)) +
scale_fill_manual(values = col1)
## sigma
sigma_data = data.frame("class" = factor(rep(c("GH","TS","BT"),each = dim1),
levels = c("GH","TS","BT")),
"value" = c(data1[,4],data1[,8],data1[,12]))
sigma_plot = plot_5_methods(dat = sigma_data) +
geom_hline(yintercept = sigma,linetype = 3) +
scale_y_continuous(limits = str1[7:8]) +
xlab(expression(sigma)) +
scale_fill_manual(values = col1[1:3])
return(plot_grid(b_plot,c_plot,d_plot,sigma_plot,ncol = 4,nrow = 1))
}

```

all_plot_compare函数结果

• 加载Rdata并绘制图形

```# sigma0.3
all_data_0.3 = point_final
dim1 = nrow(all_data_0.3)
p_0.3 = all_plot_compare(data1 = all_data_0.3)
```

```fig11 = annotate_figure(p_0.3,
top = text_grob(bquote("("*sigma==0.3*")"),
color = "black", size = 12))
fig21 = annotate_figure(p_0.5,
top = text_grob(bquote("("*sigma==0.5*")"),
color = "black", size = 12))
fig31 = annotate_figure(p_0.8,
top = text_grob(bquote("("*sigma==0.8*")"),
color = "black", size = 12))
plot_grid(fig11,fig21,fig31,ncol = 1,nrow = 3)

```

## 小编有话说

• 可以直接 `viridis` 包进行颜色填充，例如：`scale_fill_viridis(discrete = TRUE, alpha=0.6)`。我这里使用手动加载颜色：`scale_fill_manual(values = col1)`
• 如果图形中包含中文，可以使用 `showtext` 包解决该问题，代码如下：
```library(showtext)
showtext.auto()
```
• 整个流程还有一个思路：将所有函数构建成一个大的函数，只需要改变相应参数即可，这时代码量就会减少很多。
• 希望半年后后头看这篇推文会有不一样的想法。希望到时候觉得现在的思路很幼稚！?

0 条评论

• ### Python爬虫教程：爬取知乎网

Python现在非常火，语法简单而且功能强大，很多同学都想学Python！所以小的给各位看官们准备了高价值Python学习视频教程及相关电子版书籍，欢迎前来领取...

• ### R-概率统计与模拟

正如笔者在前文《公众号一岁啦》中所说，近期在复习概率统计相关的知识。机缘巧合，笔者遇到了几个比较有意思的题目，和朋友们分享一下：

• ### 2017年11月R新包推荐

一. 文档概述 11月份，在R官方（CRAN）共计发布了237个新包，本文选摘了40个R包，包含以下几个类别：计算方法、数据、数据科学、科学、社会科学、工具及可...

• ### HAWQ取代传统数仓实践（二）——搭建示例模型（MySQL、HAWQ）

一、业务场景         本系列实验将应用HAWQ数据库，为一个销售订单系统建立数据仓库。本篇说明示例的业务场景、数据仓库架构、实验环境、源和目标库的建立过...

• ### 「Workshop」第一期：我理解的（生信）数据分析核心基础

我在简书和公众号上已经分享了很多之前学习的数据分析笔记和文章，覆盖了各方面的内容，数据分析方面以后不会再个人分享特别基础的东西了。接下来我会让师弟师妹们定期分享...

• ### 【面试必备】手撕代码，你怕不怕？

这绝对是属于重点了，不管是考察对于该重要模型的理解还是考察代码能力，这都是一道很好的考题，所以很有必要的，我们先来回顾一下什么是生产者-消费者问题；

• ### 破解某滑动验证码

首先申明：历时八天，本文作者（在多位好友的帮助下）已经成功破解该验证码成功率73%，但是出于网络安全与知识产权等因素（破解只是兴趣，不能咂人家饭碗），不会提供完...

• ### 机器学习初体验（1）

本文是作者在赤兔APP“数据挖掘”小组内在线分享的记录的第【1】部分。 分享主题：机器学习初体验 分享时间：2016年5月25日晚8：00-10：00 分享地点...

• ### 分布式计算技术MapReduce 详细解读

上周我们学习了消息中间件的核心原理以及如何搭建一套高并发高可用且支持海量存储的生产架构（今天来设计一套高可用高并发、海量存储以及可伸缩的消息中间件生产架构），我...

• ### 独家 | 利用Auto ARIMA构建高性能时间序列模型（附Python和R代码）

本文共3400字，建议阅读10+分钟。 本文介绍了ARIMA的概念，并带你用Python和R训练一个数据集实现它。

• ### Mysql死锁如何排查：insert on duplicate死锁一次排查分析过程

遇到Mysql死锁问题，我们应该怎么排查分析呢？之前线上出现一个insert on duplicate死锁问题，本文将基于这个死锁问题，分享排查分析过程，希望对...

• ### 关于数据分析工具的终极问题

昨晚在CPDA微课堂做了场直播，聊了一个终极问题，也是很多人在关注的话题。我把内容整理下来供读者们阅读、质疑和思考。（全文长6000多字）

• ### 接入层Nginx架构及模块介绍分享

1）帮助大家对Nginx有一定的认识 2）熟悉Nginx有哪些应用场景 3）熟悉Nginx特点和架构模型以及相关流程 4）熟悉Nginx定制化开发的几种模...

• ### 每日算法系列【LeetCode 42】接雨水

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图，计算按此排列的柱子，下雨之后能接多少雨水。

• ### Oracle Linux6.9下安装Oracle 11.2.0.4.0及psu补丁升级

Oracle (Enterprise) Linux 是一个基于 Red Hat Enterprise Linux 源码构建的 Linux 发行版，由 Oracl...

• ### 从这5个场景, 看MPC多方安全计算的行业应用

在我们之前的“多方安全计算”系列文章中，我们首先通过姚期智教授的“百万富翁问题”引出了数据安全计算这个密码学话题，并介绍了多方安全计算在数据隐私中的应用场景。第...

• ### Apache Spark 2.0预览：机器学习模型持久性

以上所有应用场景在模型持久性、保存和加载模型的能力方面都更为容易。随着Apache Spark 2.0即将发布，Spark的机器学习库MLlib将在DataFr...