“颜值就是影响因子”:R可视化美学提升之条形图代码

文摘   2024-12-24 09:01   荷兰  
数据可视化不仅是科学研究和商业分析的工具,也是传递信息、说服受众的重要桥梁。尤其是在高质量期刊、报告或海报,图表的美学表现直接影响其信息传递的效率和说服力。
许多学术杂志和会议对图表提出了严格要求,例如: 
清晰性:标题、标签需准确、简洁。 
一致性:颜色、字体需统一。 
专业性:避免过多装饰,突出数据本身。 
高分辨率输出:图片需满足打印要求(如 300 DPI)。
从今天开始我将陆陆续续更新各种图表的可视化美学优化代码,今天的更新将以条形图为例,演示如何通过 ggplot2 在三步内实现从普通图表到专业提交图的优化。

1:数据准备与基本条形图绘制
首先,使用 mtcars 数据集统计不同汽缸数的分布,并绘制基本的条形图。
# 加载必要的库
library(ggplot2)

# 准备数据:计算不同汽缸数的频数
data <- as.data.frame(table(mtcars$cyl))
colnames(data) <- c("Cylinders", "Frequency")

# 绘制基本条形图
p <- ggplot(data, aes(x = Cylinders, y = Frequency)) +
geom_bar(stat = "identity", fill = "steelblue") +
theme_minimal()

p
此时的条形图虽然展示了基本信息,但风格简单,缺乏吸引力,难以满足正式场合的需求。
2:调整字体与布局
这部分主要是为了增强文本的可读性和布局的整洁性。
# 添加标题并调整字体
p <- p +
labs(
title = "Distribution of Cylinders in Cars",
x = "Number of Cylinders",
y = "Frequency"
) +
theme(
plot.title = element_text(size = 18, face = "bold", hjust = 0.5),
axis.title.x = element_text(size = 14, face = "bold"),
axis.title.y = element_text(size = 14, face = "bold"),
axis.text = element_text(size = 12),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank()
)

p
经过调整,图表的标题、标签字体更大更清晰,整体布局更加规范,网格线的去除使图表简洁明了。
3:配色优化与输出
优化配色方案和输出参数,使图表具备专业外观和提交所需的质量。这一步主要是为了满足杂志的要求。
# 加载必要的库
library(ggplot2)

# 准备数据:计算每种汽缸数的平均频率和标准差
data <- aggregate(mpg ~ cyl, data = mtcars, FUN = function(x) c(mean = mean(x), sd = sd(x)))
data <- data.frame(
Cylinders = as.factor(data$cyl), # 将汽缸数转换为因子
Frequency = data$mpg[, "mean"], # 平均值
SD = data$mpg[, "sd"] # 标准差
)

# 绘制条形图并优化样式
p <- ggplot(data, aes(x = Cylinders, y = Frequency, fill = Cylinders)) +
# 添加柱状图,设置边框和宽度
geom_bar(stat = "identity", color = "black", size = 1, width = 0.6) +
# 添加误差线(标准差)
geom_errorbar(aes(ymin = Frequency - SD, ymax = Frequency + SD),
width = 0.2, size = 0.8, color = "black") +
# 配色方案
scale_fill_manual(values = c("#4d4d4d", "#6d6d6d", "#8d8d8d")) +
# 添加标题和标签
labs(
title = "Average MPG by Number of Cylinders with SD",
x = "Number of Cylinders",
y = "Average MPG",
fill = "Cylinder Type"
) +
# 优化主题
theme_minimal() +
theme(
plot.title = element_text(size = 18, face = "bold", hjust = 0.5),
axis.title.x = element_text(size = 14, face = "bold"),
axis.title.y = element_text(size = 14, face = "bold"),
axis.text = element_text(size = 12),
legend.title = element_text(size = 14, face = "bold"),
legend.text = element_text(size = 12),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
plot.background = element_rect(fill = "white", color = NA)
)

p

小结

通过以上三步,我们将一个普通条形图优化为一张满足提交要求的高质量图表。在数据可视化中,美学优化是不可忽视的一环。它不仅提升了信息传递的效果,还彰显了数据分析者的专业性。在后续的更新中,我会分享更多使用代码比如热图,柱状图,散点图等,凡是大家能用到的就是我所关心的。欢迎继续关注!

感谢关注,你的支持是我不懈的动力!

科研代码
专注R和Python的数据分析。
 最新文章