Nature原图复现,原来这么简单?
moboyou 2025-05-13 21:56 10 浏览
最近看到一幅好看且复杂的nature插图,被配色和构思折服,于是,我打算来复现一下这个图的绘制过程。不难看出这幅图属于非常规图,应该是用matlab代码写成的,但是对于不会matlab的小白来说,即使获取到了代码也不容易化为己用,所以如何才能简单粗暴地把这幅图画出来呢?
Paoli L, Ruscheweyh HJ, Forneris CC, et al. Biosynthetic potential of the global ocean microbiome. Nature. 2022;607(7917):111-118. doi:10.1038/s41586-022-04862-3
分析图中的元素是由哪些组成的,这样才容易下手。从外观来看,它是一个均匀分布的扇形图,扇形图被分成了好多段,外面三层是一个类型,向里是分了6层的圆形气泡图,圆的大小代表了数值的大小,再向里是圆形的堆积图,用来展示数据在总量中的占比,再向里还是扇形图,再向里是用来表达显著性差异的。
绘制扇形图
在wps的excel中绘制60块扇形区(office的excel出图在visio中粘贴会出现无法取消组合的情况)。输入60行数值1,表示分成60个扇形区,每个扇形区角度一致。
在Visio中编辑
复制图表,粘贴至visio中,取消组合,删除多余的部分,选中全部,放大至一定大小。如图所示,扇形区可编辑。
组合叠放
选中全部,组合,这时组合图形为一个方形,将长度和宽度调整为一个整数值。复制组合成的方形图,然后按照需要的数量进行粘贴。在这里粘贴三次即可。将粘贴出的方形图按照需要将高度和宽度向内缩小一定数值。然后将四组图形按照圆心重叠的方式堆叠在一起,下图为整体效果图。这时,外围的三层扇形已经有形状了。具体的长宽值按照自己的形状大小来设定。
填色、调整间距
选中全部,右键取消组合,这时,每一块的扇形格都能够更改颜色和线条。因为没有数据,所以这里我用近似的颜色替代。填色完成后是这种效果,中间的填充为白色,这样外围就画好了,可以全部选中调整线条的粗细将扇形的距离进行改变。
绘制圆形散点图
绘制圆形散点气泡图,因为没有数据,这里就随意地画了。首先在excel中确定圆形的散点位置,总共60个扇形区域,每个扇形区域为6度,默认半径为1,将60个点以圆的形式展现。左侧一列是角度值(只截取了部分),右边是用图中的公式求出的极坐标位置,radians函数是转化为弧度的函数。选中FG两列,插入散点图,可以看到下图,代表我们的位置已经找好了。
绘制圆形气泡图
为每一个点赋予权重,因为原图的圆圈大小不同的,是根据实际值计算比例的,为了大概相似,我们这里随意的给这60个点赋权重,范围是0-3的随机数(实际作图时以实际数据为准)。然后调整图像属性,将气泡缩放比例调整一下,具体数值按照喜好调整。
气泡图填色放入圆环中
还是将图片复制到visio,取消组合,删除多余部分,组合剩下的部分,调整高度和宽度。将其放在正中间的部分,图中的虚线是参考线,用于对准。
加入剩余的气泡图
继续以同样的方式创建其余的气泡并放置在图中。填充颜色,并给它们画上轨道,颜色灰色。
绘制圆形堆积图
继续向内绘制。第二步我们创建的扇形图是可以通过拉拽调整大小的,可以用此操作调整各部分的比例大小,如果有数据的话要严格按照数据的比例调整大小。还是按照第三步的堆叠方式,我们简化为三种数据,先简单地将三种数据的扇形图叠放。
调整扇形长度
调整小扇形的长度,达到堆积的效果。效果如图所示。再向内绘制另外一层圆环图。
绘制无填充扇形
在第二步的图的基础上,全选,线条颜色改为黑色,填充颜色改为黄色,我们会发现黄色的部分可以删除,而线条还存在,我们将所有填充的部分删除,只留线条。
修剪出若干弧线
将线框图随意制作成下图的模样,选中所有图形,在开发工具里面选择修剪工具,将我们需要的圆弧部分提取出来。
完成最内层图像绘制
按照原图通过画直线的方式将结构绘制出来,具体形状参考真实数据,我在这里做了省略。
添加其他标注信息
在图中加入剩余的标注信息,这样整个图的制作过程就完成了。
总结思路、难易程度
绘制这种图的思路就是从excel中创建基本图形,然后在visio中对基本图形进行组合重建,通过图层的叠加覆盖,得到我们想要的图形。我们没有想象力时,可以参考别人的构图思路,然后把自己的想法加入进去。
网上有很多复杂图形的教程,都是在matlab里面通过复杂的编程实现的,对于新手来说,读懂代码再搞清楚如何把自己的数据代入进去会花费很长时间,门槛很高,而学会利用visio和excel这两款基本的软件,就可以画出很好看很高级的图形,门槛低,容易学,不失为一个好的办法。
关注“博硕科研绘图”公众号,了解更多科研绘图知识!
- 上一篇:普通车床加工薄壁零件的方法
- 下一篇:螺旋面求交计算和交线的投影可以告一段落了
相关推荐
- jQuery EasyUI使用教程:创建展开行详细编辑表单的CRUD应用
-
当切换datagrid视图到"detailview"时,用户可以展开一行来显示该行下面的任何详细信息。此功能允许用户为放置在行详细信息面板中的编辑表单提供恰当的布局。在本教程中,我们使用DataGri...
- 前端入门——html 表单控件使用(html表单组件)
-
上篇介绍了表单的使用,表单有很多控件,比如输入框,密码框、文本域,按钮等。按类型可分如下:输入类控件菜单类控件输入类组件——input此类控件有很多种类型,使用<inputtype=...
- [北大青鸟广州新嘉华]HTML5 表单属性有哪些?(1)
-
在编写HTML5页面时,我们很多时候都需要用到表单属性,那么HTML5作为一个新晋IT界红人,HTML5表单属性有哪些呢?今天先来分享一下其中的<form>/<input>...
- JavaScript FormData 对象(js file对象)
-
下面的代码创建了一个空的FormData对象:varformData=newFormData();//CurrentlyemptyFormData.append()FormData...
- 「layui」表单验证:验证注册(表单验证是什么)
-
注册界面手动验证获取短信验证码代码原文<!DOCTYPEhtml><htmllang="zh"><head>&...
- php使用file_get_contents(‘php://input‘)和$_POST的区别
-
为什么和第三方平台对接接口的时候,在接收http请求数据包时,一般都是用file_get_contents("php://input"),而不是用$_POST呢?file_get_co...
- 专为Vue打造的开源表单验证框架,Github star7k+——VeeValidate
-
介绍vee-validate是Vue.js的基于模板的验证框架,可以验证输入并显示错误。基于模板,只需为每个输入值更改时指定应使用哪种验证器。系统会在支持40多种语言环境的情况下自动生成错误。现成的规...
- 如何通过FORScan修改福特汽车系统模块内置数据
-
如何在Windows电脑或平板电脑上使用FORScan进行各种调整或编程MOD。FORScan与多个蓝牙或Wi-FiOBD适配器兼容。我个人建议您使用vlinkerMC蓝牙或vlinerMCW...
- PHP如何上传文件(php中实现文件上传需要用到哪几个函数)
-
文件上传是网站开发中常见的功能之一,它可以使用户轻松上传图片、音频、视频等文件。在PHP中,实现文件上传也非常简单。下面为大家介绍具体的步骤,让你的网站功能更加强大。步骤一:创建文件上传表单首先,我们...
- PHP入门读书笔记(十六):WEB页面使用PHP
-
Web表单主要用来在网页中发送数据到服务器,经过程序处理中,将用户所需要的信息再传递给客户端的浏览器上。这样就形成了一个浏览者和网站之间的一个互动。一、表单的提交方式<formname=’NA...
- 前端入门——html 表单(前端的表单是怎么实现的)
-
前言前面已经学习相关html大部分知识,基本上可以制作出简单的页面,但是这些页面都是静态的,一个网站如果要实现用户的互动交流,这时表单就起到关键的作用,表单的用途很多,它主要用来收集用户的相关信息,是...
- HTML表单4(form的action、method属性)——零基础自学网页制作
-
表单的工作过程表单的信息发送与处理过程可以简单的进行图示,如下图。以注册会员为例,用户在自己的电脑上打开相应的注册表单页面填写信息,完成填写后点击提交按钮,也就是图中1所示过程。这时浏览器会将这些信息...
- 为你的WordPress widget建立表单(wordpress divi)
-
通过之前的三部分教程我们已经创建了一个自己的WordPresswidget。今天我们将给大家介绍如何为你的widget创建表单,以至于WordPress可以及时的更新widget设置。为widget...
- 如何使用PHP编写一个简单的留言板?
-
留言板是一个常见的Web应用程序,允许用户在网站上发布和查看留言。在本文中,我们将使用PHP编写一个简单的留言板,介绍构建过程中的关键步骤和技巧。一、准备工作在开始编写留言板之前,我们需要准备好以下工...
- 3分钟拥有一个属于自己的博客网站「腾讯云篇」
-
一、前言想要搭建一个让全世界的人都可以访问的网站,我们最少需要准备三样东西:①服务器腾讯云服务器首年低至40元/年,「链接」阿里云服务器新用户可以免费使用6个月,新人特惠_云产品推荐_云服务器-阿里云...
- 一周热门
- 最近发表
-
- jQuery EasyUI使用教程:创建展开行详细编辑表单的CRUD应用
- 前端入门——html 表单控件使用(html表单组件)
- [北大青鸟广州新嘉华]HTML5 表单属性有哪些?(1)
- JavaScript FormData 对象(js file对象)
- 「layui」表单验证:验证注册(表单验证是什么)
- php使用file_get_contents(‘php://input‘)和$_POST的区别
- 专为Vue打造的开源表单验证框架,Github star7k+——VeeValidate
- 如何通过FORScan修改福特汽车系统模块内置数据
- PHP如何上传文件(php中实现文件上传需要用到哪几个函数)
- PHP入门读书笔记(十六):WEB页面使用PHP
- 标签列表
-
- 外键约束 oracle (36)
- oracle的row number (32)
- 唯一索引 oracle (34)
- oracle in 表变量 (28)
- oracle导出dmp导出 (28)
- oracle两个表 (20)
- oracle 数据库 字符集 (20)
- oracle安装补丁 (19)
- matlab化简多项式 (20)
- 多线程的创建方式 (29)
- 多线程 python (30)
- java多线程并发处理 (32)
- 宏程序代码一览表 (35)
- c++需要学多久 (25)
- css class选择器用法 (25)
- css样式引入 (30)
- html5和css3新特性 (19)
- css教程文字移动 (33)
- php简单源码 (36)
- php个人中心源码 (25)
- 网站管理平台php源码 (19)
- php小说爬取源码 (23)
- github好玩的php项目 (18)
- 云电脑app源码 (22)
- js创建txt文件 (18)