ChatGPT: 三句话,我让审稿人爱上你的配色!

文摘   2024-11-30 09:03   爱尔兰  

写在前面

你是否曾在修改论文或数据分析时,遇到想调整图表配色却束手无策的情景?很多时候,尽管我们的分析结果已经非常完美,但图表的配色不当却影响了呈现效果,甚至影响了论文的质量和读者的感受。这时,不少科研工作者和数据分析师会想到使用各种配色工具,手动调整每一项颜色,但这不仅耗时耗力,结果的精细度也未必理想。

幸运的是,ChatGPT 作为一个强大的人工智能助手,能帮助你调整图表配色方案。你可以通过简洁的对话,获取灵感并定制符合特定主题的配色,特别是像《塞尔达传说》这样具有特色风格的配色,ChatGPT 可以轻松满足你在图表视觉效果上的需求。

通过简短的对话,我们可以引导 ChatGPT 提供符合特定风格的颜色推荐,应用于各种类型的 R 语言数据可视化图表中,包括柱状图、小提琴图、饼图、箱线图、桑葚图、热图等,不仅让数据更加美观,同时提升读者的视觉体验和对数据的理解。

今天的更新,我们就通过简单的例子展示,如何通过与 ChatGPT 的对话,迅速生成并应用《塞尔达传说》风格的配色方案,并将其应用到各种数据可视化中。


引导词:

“假设你是数据可视化专家,我需要一个塞尔达风格的配色,用于 R 语言数据可视化(柱状图、饼图、小提琴图、箱线图、桑葚图、热图等),给我几种颜色推荐。”

ChatGPT 提供的配色方案:
以下是灵感来自《塞尔达传说》的配色方案:
深绿色(森林主题)
#0B6623
沙漠黄(沙漠主题)#D9A066
天空蓝(天空主题)#7EC8E3
深棕色(木材主题)#5A3E36
石灰绿(草地主题)#A7C957
黄昏橙(落日主题)#F28C28

通过这几种色调,我们能够将自然、复古的游戏风格融入科研数据可视化中,创造出独特的视觉效果。


配色应用:如何将塞尔达风格配色应用于R语言可视化

1. 柱状图

library(ggplot2)

# 使用 mtcars 数据集,按 cyl 分组计算平均 mpg
data_bar <- aggregate(mpg ~ cyl, data = mtcars, mean)
colnames(data_bar) <- c("Cylinders", "Average_MPG")

# 绘制柱状图
ggplot(data_bar, aes(x = factor(Cylinders), y = Average_MPG, fill = factor(Cylinders))) +
geom_bar(stat = "identity", color = "black", alpha = 0.8) +
scale_fill_manual(values = c("#7EC8E3", "#0B6623", "#F28C28")) + # 塞尔达配色
labs(
title = "不同气缸数车辆的平均油耗",
x = "气缸数",
y = "平均油耗 (mpg)",
fill = "气缸数"
) +
theme_minimal(base_size = 14) +
theme(
plot.title = element_text(hjust = 0.5, face = "bold", color = "#0B6623"),
axis.title.x = element_text(face = "bold", color = "#D9A066"),
axis.title.y = element_text(face = "bold", color = "#D9A066")
)

2. 饼图

library(ggplot2)

# 使用 mtcars 数据集,按 cyl 分组计算频率
data_pie <- as.data.frame(table(mtcars$cyl))
colnames(data_pie) <- c("Cylinders", "Count")

# 绘制饼图
ggplot(data_pie, aes(x = "", y = Count, fill = factor(Cylinders))) +
geom_bar(stat = "identity", width = 1, color = "black") +
coord_polar("y", start = 0) +
scale_fill_manual(values = c("#7EC8E3", "#0B6623", "#F28C28")) + # 塞尔达配色
labs(
title = "不同气缸数车辆的分布",
fill = "气缸数"
) +
theme_void() +
theme(
plot.title = element_text(hjust = 0.5, face = "bold", color = "#0B6623")
)

3. 小提琴图

library(ggplot2)

# 使用 ToothGrowth 数据集
# dose 变量因子化以便分组展示
ToothGrowth$dose <- factor(ToothGrowth$dose)

# 绘制小提琴图
ggplot(ToothGrowth, aes(x = dose, y = len, fill = dose)) +
geom_violin(color = "black", alpha = 0.8) +
geom_boxplot(width = 0.2, color = "black", outlier.shape = NA, alpha = 0.5) + # 添加箱线图
scale_fill_manual(values = c("#7EC8E3", "#0B6623", "#F28C28")) + # 塞尔达配色
labs(
title = "不同剂量维生素C对牙齿生长的影响",
x = "剂量 (mg/day)",
y = "牙齿长度",
fill = "剂量"
) +
theme_minimal(base_size = 14) +
theme(
plot.title = element_text(hjust = 0.5, face = "bold", color = "#0B6623"),
axis.title.x = element_text(face = "bold", color = "#D9A066"),
axis.title.y = element_text(face = "bold", color = "#D9A066"),
axis.text.x = element_text(face = "bold", color = "#5A3E36"),
axis.text.y = element_text(face = "bold", color = "#5A3E36")
)

4. 箱线图

# 使用 mtcars 数据集,绘制 mpg 随 cyl 的箱线图
library(ggplot2)
ggplot(mtcars, aes(x = factor(cyl), y = mpg, fill = factor(cyl))) +
geom_boxplot(color = "black", alpha = 0.8) +
scale_fill_manual(values = c("#7EC8E3", "#0B6623", "#F28C28")) + # 塞尔达配色
labs(
title = "气缸数对油耗的影响",
x = "气缸数",
y = "油耗 (mpg)",
fill = "气缸数"
) +
theme_minimal(base_size = 14) +
theme(
plot.title = element_text(hjust = 0.5, face = "bold", color = "#0B6623"),
axis.title.x = element_text(face = "bold", color = "#D9A066"),
axis.title.y = element_text(face = "bold", color = "#D9A066")
)

5. 桑葚图

library(ggalluvial)

library(ggplot2)

# 数据准备
data_titanic <- as.data.frame(Titanic)
data_titanic <- data_titanic[rep(1:nrow(data_titanic), data_titanic$Freq), 1:4] # 展开数据

# 绘制桑葚图
ggplot(data_titanic, aes(axis1 = Class, axis2 = Sex, axis3 = Survived)) +
geom_alluvium(aes(fill = Class), width = 0.25, alpha = 0.8) +
geom_stratum(width = 0.3, color = "black", fill = "grey80") +
geom_text(stat = "stratum", aes(label = after_stat(stratum)), size = 3) +
scale_fill_manual(values = c("#7EC8E3", "#0B6623", "#F28C28", "#D9A066")) + # 塞尔达配色
labs(
title = "Titanic 桑葚图:Class, Sex 和 Survived",
x = "",
y = "人数",
fill = "Class"
) +
theme_minimal(base_size = 14) +
theme(
plot.title = element_text(hjust = 0.5, face = "bold", color = "#0B6623"),
axis.text.x = element_text(face = "bold", color = "#5A3E36"),
panel.grid = element_blank()
)

6. 热图

library(ggplot2)
library(reshape2)

# 数据准备
data <- cor(mtcars) # 计算相关性矩阵
data_melt <- melt(data)
colnames(data_melt) <- c("Var1", "Var2", "value")

# 添加是否显示数字/圆圈的逻辑列
data_melt$is_upper <- ifelse(as.numeric(data_melt$Var1) < as.numeric(data_melt$Var2), TRUE, FALSE)

# 绘制热图
ggplot(data_melt, aes(x = Var2, y = Var1, fill = value)) +
# 显示上方的相关性系数数字
geom_text(
data = subset(data_melt, is_upper),
aes(label = round(value, 2)),
color = "black", size = 3
) +
# 显示下方的圆圈,大小与相关系数绝对值相关
geom_point(
data = subset(data_melt, !is_upper),
aes(size = abs(value)),
shape = 21, color = "black", alpha = 0.8
) +
# 设置圆圈的大小范围
scale_size(range = c(3, 10), guide = "none") +
# 配色从蓝到白到红
scale_fill_gradient2(
low = "#7EC8E3", mid = "#FFFFFF", high = "#F28C28",
midpoint = 0, limits = c(-1, 1)
) +
# 标题与图例
labs(
title = "塞尔达风格相关性热图",
x = "变量 1",
y = "变量 2",
fill = "相关性"
) +
# 自定义主题
theme_minimal(base_size = 14) +
theme(
# 标题样式
plot.title = element_text(hjust = 0.5, face = "bold", color = "#0B6623", size = 16),
# 坐标轴标题和文字颜色
axis.title.x = element_text(color = "#D9A066", face = "bold", size = 14),
axis.title.y = element_text(color = "#D9A066", face = "bold", size = 14),
axis.text.x = element_text(angle = 45, hjust = 1, color = "#5A3E36", size = 10),
axis.text.y = element_text(color = "#5A3E36", size = 10),
# 网格线隐藏
panel.grid = element_blank(),
# 图例样式
legend.position = "right",
legend.title = element_text(face = "bold", size = 12),
legend.text = element_text(size = 10)
)


总结

通过简洁的三句话,你可以轻松调教 ChatGPT,为你的 R 语言可视化生成个性化的塞尔达风格配色方案。不论是柱状图、饼图、小提琴图,还是更复杂的桑葚图、热图等,配色方案的灵感源自经典的游戏世界,让你的数据更具美感和表达力。

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

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