当前位置:网站首页>学习SCI论文绘制技巧(F)
学习SCI论文绘制技巧(F)
2022-06-23 09:02:00 【庄闪闪】
简介
在查阅文献的过程中,看到了几幅非常不错的出版图,今天就跟着小编一起学习下,他们是怎么使用 R 绘制出来的。

今天主要介绍 第六幅图(F) —— 四维散点图,这个图在科研绘图中也是较为常用。可以展现多个维度的数据。
前五幅图的详细代码介绍可见:基于 R 语言的科研论文绘图技巧详解(4)、基于 R 语言的科研论文绘图技巧详解(3)基于 R 语言的科研论文绘图技巧详解(2)基于 R 语言的科研论文绘图技巧详解(1) 。最后一幅图会随后继续介绍,读者在学习过程中,可以将内部学到的知识点应用到自己的图形绘制中。推文已经将主要知识点进行罗列,更有利于读者学习和查阅。
那我们来看看,作者是怎么实现这个功能的吧,本文知识点较多,大家耐心学习,建议自己实践。对应代码、数据可在 GitHub - marco-meer/scifig_plot_examples_R: Scientific publication figure plotting examples with R 中找到。
绘图
加载包
首先加载一些需要使用到的包。
library(ggplot2)
library(viridis) # 使用配色样式
设置主题
接下来,为了方便起见,作者在绘图前设置好了主题,并将该函数命名为 my_theme。
这一部分在第一篇推文给出,代码将在文末中完整代码给出。
手动修改大部分面板,具体可以参考本篇文章。或者观看我在 B 站发布的《R 语言可视化教程》,里面也有一些简单主题设置介绍。
导入数据
首先使用 read.csv() 导入四维数据,前 6 行数据如下所示。
data_F = read.csv("./data_F.csv")
head(data_F)
# K n amplitude duration
1 32.586025 3.065018 21.95444 2.3242144
2 9.012644 2.358836 60.16122 1.0029049
3 10.814589 1.829281 25.99396 0.5406435
4 23.560813 1.709909 61.18815 2.7394397
5 7.626436 1.566929 54.41945 0.7152433
6 15.295503 2.276775 39.79195 0.8423647
绘制图形
简单绘制散点图 geom_point(),amplitude 来设置形状大小,duration 来作为填充依据。
base_size = 12
ggplot(data=data_F,
aes(x=K,y=n,
size=amplitude,
fill=duration))+
geom_point(pch=21)

添加主题,并修改 x、y 轴刻度和标签。
注意:x 轴中转化成对数刻度 (
trans = 'log10')。
my_theme() +
scale_x_continuous(expand = c(0, 0),
trans = 'log10',
labels=c(1,10,100),
breaks=c(1,10,100),
limits = c(1,100)) +
scale_y_continuous(expand = c(0, 0),
breaks=c(seq(0,4,by=0.5)),
limits = c(0,4)) + +
xlab(expression(paste("dissociation constant",~~italic("K")," (M)"))) +
ylab("Hill coefficient n")

使用 annotation_logticks() 添加对数刻度。scale_size(range = c(1, 3)) 修改散点的大小范围。这里还使用了 viridis 包中的配色样式 scale_fill_viridis(option="D")。最后修改图例位置 theme(legend.position = c(0.9,0.35))。
annotation_logticks(sides='b') + #添加对数刻度
scale_size(range = c(1, 3)) + #散点的大小范围
scale_fill_viridis(option="D") + #配色样式
theme(legend.position = c(0.9,0.35)) #修改图例位置

但是,最下面有一个点并没有显示清楚,这里作者运用了一个小技巧(上一篇也用到了),将这些点清晰的呈现出来。来看看这个代码的效果:
coord_cartesian(clip = "off")

完整代码
# Panel F ----
library(ggplot2)
library(vi)
base_size = 12
my_theme <- function() {
theme(
aspect.ratio = 1,
axis.line =element_line(colour = "black"),
# shift axis text closer to axis bc ticks are facing inwards
axis.text.x = element_text(size = base_size*0.8, color = "black",
lineheight = 0.9,
margin=unit(c(0.3,0.3,0.3,0.3), "cm")),
axis.text.y = element_text(size = base_size*0.8, color = "black",
lineheight = 0.9,
margin=unit(c(0.3,0.3,0.3,0.3), "cm")),
axis.ticks = element_line(color = "black", size = 0.2),
axis.title.x = element_text(size = base_size,
color = "black",
margin = margin(t = -5)),
# t (top), r (right), b (bottom), l (left)
axis.title.y = element_text(size = base_size,
color = "black", angle = 90,
margin = margin(r = -5)),
axis.ticks.length = unit(-0.3, "lines"),
legend.background = element_rect(color = NA,
fill = NA),
legend.key = element_rect(color = "black",
fill = "white"),
legend.key.size = unit(0.5, "lines"),
legend.key.height =NULL,
legend.key.width = NULL,
legend.text = element_text(size = 0.6*base_size,
color = "black"),
legend.title = element_text(size = 0.6*base_size,
face = "bold",
hjust = 0,
color = "black"),
legend.text.align = NULL,
legend.title.align = NULL,
legend.direction = "vertical",
legend.box = NULL,
panel.background = element_rect(fill = "white",
color = NA),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
plot.title = element_text(size = base_size,
color = "black"),
)
}
data_F = read.csv("./data_F.csv")
head(data_F)
panel_F <- ggplot(data=data_F,
aes(x=K,y=n,
size=amplitude,
fill=duration))+
geom_point(pch=21) +
my_theme() +
scale_x_continuous(expand = c(0, 0),
trans = 'log10',
labels=c(1,10,100),
breaks=c(1,10,100),
limits = c(1,100)) +
scale_y_continuous(expand = c(0, 0),
breaks=c(seq(0,4,by=0.5)),
limits = c(0,4)) +
xlab(expression(paste("dissociation constant",~~italic("K")," (M)"))) +
ylab("Hill coefficient n") +
annotation_logticks(sides='b') +
scale_size(range = c(1, 3)) +
scale_fill_viridis(option="D") + # a color palette from the viridis package
theme(legend.position = c(0.9,0.35)) +
coord_cartesian(clip = "off")
panel_F
小编有话说
本文主要学到的知识点如下:
- 使用
annotation_logticks()添加对数刻度。 - 使用
scale_size()修改散点的大小范围; - 使用 viridis 包中的配色样式
scale_fill_viridis(); - 使用
theme(legend.position = )修改图例位置。
看完这篇文章,相信你的技能包又多了点东西。记得实操噢!看了不代表就会了~ 如果觉得内容有用的话,小编写的有心的话。给小编来杯咖啡吧!
边栏推荐
- 力扣之滑动窗口《循序渐进》(209.长度最小的子数组、904. 水果成篮)
- 36氪首发|云原生数据库公司「拓数派」完成新一轮战略融资,估值已达准独角兽级别
- Flink error --caused by: org apache. calcite. sql. parser. SqlParseException: Encountered “time“
- [qnx hypervisor 2.2 user manual]5.6.1 silent device during guest shutdown
- Vue3表单页面利用keep-alive缓存数据的一种思路
- [learning resources] understand and love mathematics
- 【NanoPi2试用体验】裸机第一步
- Mqtt+flink to subscribe and publish real-time messages
- 173. Binary Search Tree Iterator
- In June, China database industry analysis report was released! Smart wind, train storage and regeneration
猜你喜欢
随机推荐
1、 Software architecture evaluation
Spirit matrix for leetcode topic analysis
Leetcode topic analysis count primes
986. Interval List Intersections
Redis学习笔记—单个键管理
“教练,我想打篮球“ —— 给做系统的同学们准备的 AI 学习系列小册
Testing -- automated testing selenium (about API)
Flink错误--Caused by: org.apache.calcite.sql.parser.SqlParseException: Encountered “time“
嵌入式系统概述(学习笔记)
How to use "tomato working method" in flowus, notation and other note taking software?
Batch generation of code128- C barcode
2022.6.22-----leetcode.513
node request模塊cookie使用
Leetcode topic analysis set matrix zeroes
Detailed explanation of srl16e in xilinxffpga
Redis学习笔记—持久化机制之RDB
In depth interpretation of poca smart contract platform gear: the road to parallel architecture public chain
3. Caller 服务调用 - dapr
【活动报名】SOFAStack × CSDN 联合举办开源系列 Meetup ,6 月 24 日火热开启
Cookie和Session入门








