老板让你复现一个图片,你会使用什么软件?

简介: 老板觉得课件的图形太过模糊和单调,于是想让我用可视化软件复现一下,做的更加高清、精美些。

简介


老板觉得课件的图形太过模糊和单调,于是想让我用可视化软件复现一下,做的更加高清、精美些。


当我本科的时候,对于这种问题,我第一时间想起来的就是使用 PPT 绘制啦~。但是自从学习了 R 语言、ggplot 语法之后,我果断使用 ggplot2 包来实现。大概花了 30min 左右复现这个图形。对比结果如下:

36KQFVUC)R(VG)}W]943ESS.png

主要由两部分构成:1. 绘制密度函数曲线并填充分位数面积;2. 添加各种线段和文字。


数据产生

set.seed(1) #确保不同机子产生的随机数相同
mu = c(2,5)
std = c(1,1)
num = 1000
r1 = rnorm(num,mu[1],std[1]) #正态分布
r2 = rnorm(num,mu[2],std[2]) #正态分布
data = data.frame('value' = c(r1,rep(NA,num),r2,rep(NA,5*num)),
                  'class' = factor(rep(c(1:8),each= num)))
knitr::kable(head(data))

CEXLK0I2YEU}CI3H}SE9X~R.png


定义主题

文中定义了一个自定义主题函数theme_manual(),主要想把背景,各种刻度都去掉。大家以后有这个需求可以直接拿去用,当然最好不要白嫖,打个赏也行嘿嘿。

theme_manual = function(){ 
    theme(panel.grid = element_blank(),
          panel.border = element_blank(),
          axis.text = element_blank(),
          axis.ticks = element_blank(),
          legend.position="none") 
}


画图

ggplot(data, aes(x = value, y = class,fill = factor(stat(quantile)))) + 
  # 添加密度函数图
  stat_density_ridges(
    geom = "density_ridges_gradient",
    calc_ecdf = TRUE,rel_min_height = 0.02,
    quantiles = c(0.025, 0.975),
    alpha = 1,scale = 0.6,bandwidth = 1
  ) +
  scale_fill_manual(
    name = "Probability", values = c("#FF0000A0", "white", "#FF0000A0"),
    labels = c("(0, 0.025]", "(0.025, 0.975]", "(0.975, 1]")
  ) + 
  # 手动一条条添加各种线段,文字
  annotate("segment", x = mu[1], xend = mu[1], y = 1, yend = 7,colour = "black") +
  annotate("segment", x = mu[2]-1, xend = mu[2]-1, y = 1, yend = 7,colour = "#0000FFA0",lty = "dashed") +
  annotate("segment", x = mu[1]-2.15, xend = mu[1]-2, y = 1, yend = 7,colour = "#0000FFA0",lty = "dashed") +
  annotate("segment", x = mu[2], xend = mu[2], y = 3-0.02, yend = 4.18,colour = "black") +
  annotate("segment", x = 0, xend = 10, y = 3, yend = 3,colour = "black") +
  annotate("segment", x = -3, xend = 7, y = 1, yend = 1,colour = "black") +
  annotate("text", x = mu[1], y = 0.7, label = expression(mu[T])) +
  annotate("text", x = mu[1]-2.15, y = 0.7, label = expression(alpha[1])) + 
  annotate("text", x = mu[1]+2, y = 0.7, label = expression(alpha[2])) +
  annotate("text", x = mu[2], y = 2.8, label = expression(mu[T])) +
  annotate("text", x = 0.5, y = 3.9, label = expression(beta)) + 
  annotate(geom = "line",x = c(0.8, 3.1),
             y = c(3.8, 3.2),
             arrow = arrow(angle = 20, length = unit(4, "mm"))) + # 添加线段并且包含箭头
  annotate("text", x = mu[1], y = 7.3, label = "CL") +
  annotate("text", x = mu[2]-1, y = 7.4, label = "LCL") +
  annotate("text", x = mu[1]-2, y = 7.4, label = "UCL") +
  annotate("text", x = -1.3, y = 2.3, label = expression(alpha[1] + alpha[2] == alpha)) +
  coord_flip() + # 转换横纵坐标
  theme_bw() + # 主题设置
  theme_manual() + xlab('') + ylab('')

JBNAAA~R%QP`])S_)G8LPJ1.png

可以看到,现在得到的图形和原图还是有点出处的。


调整图形细节

笔者能力有限,不能复现的一模一样,于是我使用了 AI 大法,对该图形进行了细节修改(保存该图为 pdf 版本,使用 AI 打开,进行调节)。最后得到:

IFY_4C2`)YANHY{8@AT6S91.png

如何使用 AI 可以看这篇文章:画图细节不会改?那就用 AI 吧!AI不会,没关系,R可以导出PPT格式的图形啦


目录
相关文章
|
安全 搜索推荐
下载软件别再被套路!教你避开流氓下载器的坑!
安装之前,可以看到界面中明显的提示:“使用360安全导航”、“ABC看图”,这两处旁边还有复选框,细心的你肯定知道要把这两个复选框去掉。
181 0
下载软件别再被套路!教你避开流氓下载器的坑!
|
16天前
|
安全 数据可视化 搜索推荐
做官网怎样才能不花冤枉钱?Websoft9 告诉您真相
客户想做官网却迟迟没有行动,可能是由多种因素导致,包括价格预算因素、技术评估困扰、服务商选型难题等多种原因,本文将帮您分析这些问题
43 3
做官网怎样才能不花冤枉钱?Websoft9 告诉您真相
|
6月前
|
机器学习/深度学习 编解码 算法
宣传技能培训2——《图片后期处理与制作》光影魔术师:一小时速成Lightroom图片后期软件 + 案例分析
宣传技能培训2——《图片后期处理与制作》光影魔术师:一小时速成Lightroom图片后期软件 + 案例分析
130 0
|
前端开发 Shell 程序员
🙊整活向:定期给老板推送同事的代码量
总有领导想把公司往倒闭里整。但是每天推送每个人的代码量倒是挺有趣的,git log本身就自带这个功能,不来看看吗?
171 0
🙊整活向:定期给老板推送同事的代码量
|
存储 缓存 前端开发
“你的网站加载速度很慢怎么办?”——技术经理在面试中可能遇到的可怕问题
“你的网站加载速度很慢怎么办?”——技术经理在面试中可能遇到的可怕问题
151 0
|
文字识别 测试技术 API
验证码识别最佳方案,你不来试试?
验证码识别最佳方案,你不来试试?
|
监控 安全 架构师
抱歉,你测试的项目上线之后bug太多了!
抱歉,你测试的项目上线之后bug太多了!
|
开发框架 Java 测试技术
【测试基础】五、这样提bug单,开发小哥还会怼你么?
【测试基础】五、这样提bug单,开发小哥还会怼你么?
【测试基础】五、这样提bug单,开发小哥还会怼你么?
|
测试技术
如何处理不能复现的bug?软件测试工程师避坑指南
软件测试工作中常常会遇到不能复现的bug,遇到这种情况其实很正常,但是很多测试新手都按照自己的想法处理,没有提交bug,或者匆匆关闭bug。线上出现问题,就只能自己背锅了。
554 0
|
测试技术
网上学自动化测试靠谱吗 做好这点,在选择的时候绝对能找到靠谱的
众所周知,目前我国软件测试每年都要新增大量岗位,但学校还没有开展软件测试相关的课程,而企业培养的人才远远不足需求。因此自学和培训就成为目前主流的从事软件测试的两个最有效的途径,但相对自学来说,参与培训能够在较短时间内学到软件测试的相关知识, 由于培训又分线下和线上,所以不少人就想要知道在网上学习软件测试靠谱吗?有没有自动化课程呢?
187 0
网上学自动化测试靠谱吗 做好这点,在选择的时候绝对能找到靠谱的