网易首页 > 网易号 > 正文 申请入驻

DeepSeek太赞了!如果导师让你学生信,不妨先试试这份ggplot2 可视化代码!

0
分享至

ggplot2 是 R 语言中最流行的数据可视化包之一,它基于图形语法理论,通过图层叠加的方式构建图形。ggplot2 的核心思想是将数据、映射、几何对象和美学属性分离,使图形构建更加灵活和模块化。这份DeepSeek提供的教程涵盖了ggplot2的基本用法,包括:①基本图形类型:散点图、折线图、柱状图、箱线图、直方图、密度图;②图形美化:颜色设置、标题标签、主题定制;③多图组合:分面和图形组合;④图形保存。

## 安装和加载必要的包
# install.packages(c("ggplot2", "RColorBrewer", "patchwork", "export"))
library(ggplot2)
library(RColorBrewer)
library(patchwork)

## 模拟数据集创建代码
set.seed(123)
n <- 200  # 总样本量

# 数据框创建
sim_data <- data.frame(
  group = rep(c("A", "B", "C"), length.out = n),  # 循环填充直到达到n
  category = rep(c("X", "Y"), length.out = n),     # 循环填充直到达到n
  value = c(rnorm(n/2, mean = 50, sd = 10),       # 前100个观测
            rnorm(n/2, mean = 70, sd = 15)),           # 后100个观测
  time = rep(1:10, each = n/10),                  # 10个时间点,每个20个观测
  score = runif(n, min = 0, max = 100)            # n个随机数
)

# 检查数据结构
str(sim_data)
head(sim_data)

## 1. 基本图形绘制
# 1.1 散点图
p1 <- ggplot(sim_data, aes(x = time, y = value)) + geom_point()
p2 <- ggplot(sim_data, aes(x = time, y = value, color = group)) + 
  geom_point(size = 3, alpha = 0.7)
p3 <- ggplot(sim_data, aes(x = time, y = value, color = group, shape = category)) +
  geom_point(size = 3)
p3

# 1.2 折线图
p4 <- ggplot(sim_data, aes(x = time, y = value)) + geom_line()
p5 <- ggplot(sim_data, aes(x = time, y = value, color = group)) + 
  geom_line(size = 1)
p6 <- ggplot(sim_data, aes(x = time, y = value, color = group)) +
  geom_line(size = 1) + geom_point(size = 2)
p6

# 1.3 柱状图
p7 <- ggplot(sim_data, aes(x = group)) + geom_bar()
p8 <- ggplot(sim_data, aes(x = group, fill = category)) +
  geom_bar(position = "dodge")
p9 <- ggplot(sim_data, aes(x = group, fill = category)) +
  geom_bar(position = "stack")
p10 <- ggplot(sim_data, aes(x = group, fill = category)) +
  geom_bar(position = "fill")
p10

# 1.4 箱线图
p11 <- ggplot(sim_data, aes(x = group, y = value)) + geom_boxplot()
p12 <- ggplot(sim_data, aes(x = group, y = value, fill = group)) +
  geom_boxplot(alpha = 0.7) + geom_jitter(width = 0.2, alpha = 0.5)
p12

# 1.5 直方图
p13 <- ggplot(sim_data, aes(x = value)) +
  geom_histogram(binwidth = 5, fill = "blue", color = "black")
p14 <- ggplot(sim_data, aes(x = value, fill = group)) +
  geom_histogram(binwidth = 5, alpha = 0.7, position = "identity")
p14

# 1.6 密度图
p15 <- ggplot(sim_data, aes(x = value)) +
  geom_density(fill = "blue", alpha = 0.5)
p16 <- ggplot(sim_data, aes(x = value, fill = group)) +
  geom_density(alpha = 0.5)
p16

## 2. 图形美化
# 2.1 颜色设置
display.brewer.all()
p17 <- ggplot(sim_data, aes(x = time, y = value, color = group)) +
  geom_point(size = 3) + scale_color_brewer(palette = "Set1")
p18 <- ggplot(sim_data, aes(x = time, y = value, color = group)) +
  geom_point(size = 3) + scale_color_manual(values = c("A" = "red", "B" = "blue", "C" = "green"))
p18

# 2.2 标题和标签
p19 <- ggplot(sim_data, aes(x = time, y = value, color = group)) +
  geom_point(size = 3) +
  labs(title = "Value over Time by Group",
       subtitle = "Simulated Data Example",
       x = "Time Point",
       y = "Measured Value",
       color = "Experimental\nGroup")
p19

# 2.3 主题设置
my_theme <- theme(
  plot.title = element_text(size = 16, face = "bold", hjust = 0.5),
  axis.title = element_text(size = 12),
  axis.text = element_text(size = 10),
  legend.title = element_text(size = 12),
  legend.position = "bottom",
  panel.background = element_rect(fill = "white"),
  panel.grid.major = element_line(color = "grey90"),
  panel.grid.minor = element_blank()
)

p20 <- ggplot(sim_data, aes(x = time, y = value, color = group)) +
  geom_point(size = 3) + labs(title = "Custom Theme Example") + my_theme
p20

## 3. 多图组合

# 3.1 分面
p21 <- ggplot(sim_data, aes(x = time, y = value)) + geom_point() + facet_grid(group ~ .)
p22 <- ggplot(sim_data, aes(x = time, y = value)) + geom_point() + facet_grid(. ~ group)
p23 <- ggplot(sim_data, aes(x = time, y = value)) + geom_point() + facet_grid(category ~ group)
p24 <- ggplot(sim_data, aes(x = time, y = value)) + geom_point() + facet_wrap(~ group + category, ncol = 2)
p24

# 3.2 图形组合
p_box <- ggplot(sim_data, aes(x = group, y = value)) + geom_boxplot()
p_density <- ggplot(sim_data, aes(x = value, fill = group)) + geom_density(alpha = 0.5)

combined_plot1 <- p_box + p_density  # 并排排列
combined_plot2 <- p_box / p_density  # 上下排列
combined_plot3 <- (p_box + p_density) / p_box  # 复杂布局
combined_plot3

## 4. 综合示例
final_plot <- ggplot(sim_data, aes(x = time, y = value, color = group, shape = category)) +
  geom_point(size = 3, alpha = 0.8) +
  geom_smooth(method = "lm", se = FALSE) +
  scale_color_brewer(palette = "Dark2") +
  facet_wrap(~ group, ncol = 1) +
  labs(title = "Comprehensive Example Plot",
       subtitle = "Showing trends over time by group and category",
       x = "Time Point",
       y = "Measurement Value",
       color = "Group",
       shape = "Category") +
  theme_minimal() +
  theme(
    plot.title = element_text(size = 16, face = "bold", hjust = 0.5),
    plot.subtitle = element_text(size = 12, hjust = 0.5),
    legend.position = "bottom",
    strip.text = element_text(face = "bold")
  )
final_plot

## 5. 图形保存
ggsave("final_plot.png", final_plot, width = 10, height = 8, dpi = 300)

# 使用export包保存多种格式
graph2png("my_plot.png", width = 8, height = 6)
graph2pdf("my_plot.pdf", width = 8, height = 6)
graph2ppt("my_plot.pptx", width = 8, height = 6)

## 显示部分图形
print(p1)
print(p12)
print(p19)
print(final_plot)

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
郑钦文谈温网遭遇老对手:老天爷给我机会,希望能够击败宿敌

郑钦文谈温网遭遇老对手:老天爷给我机会,希望能够击败宿敌

里芃芃体育
2026-06-29 12:00:47
南极传来两个消息,科学家集体沉默:人类的努力,正在失去意义

南极传来两个消息,科学家集体沉默:人类的努力,正在失去意义

小豫讲故事
2026-06-29 06:00:19
中国公民免签过境加拿大项目 (China Transit Program)

中国公民免签过境加拿大项目 (China Transit Program)

创作者_cLg1
2026-06-25 11:04:20
医生发现:能吃能喝的老人,基本在70岁,就已经不做这6件事了!

医生发现:能吃能喝的老人,基本在70岁,就已经不做这6件事了!

芹姐说生活
2026-06-17 18:19:12
法媒:前切尔西主帅罗塞尼尔已同意执教巴黎FC

法媒:前切尔西主帅罗塞尼尔已同意执教巴黎FC

懂球帝
2026-06-29 19:13:10
家中若有属相鸡,特别1957年“下山火鸡”,7月起,好运开始聚拢

家中若有属相鸡,特别1957年“下山火鸡”,7月起,好运开始聚拢

三农雷哥
2026-06-29 16:35:08
白玉兰奖落幕:3人口碑暴涨,2人升咖,1人镀金失败,唯她被骂惨

白玉兰奖落幕:3人口碑暴涨,2人升咖,1人镀金失败,唯她被骂惨

青梅侃史啊
2026-06-28 07:15:09
1天4个瓜!当街亲密、全网封禁,自曝怀双胎,赵丽颖最让人意外

1天4个瓜!当街亲密、全网封禁,自曝怀双胎,赵丽颖最让人意外

丁丁鲤史纪
2026-06-28 15:35:14
中国签证门槛高到想哭,印度人免签梦碎!竟指责中国刻意针对印度

中国签证门槛高到想哭,印度人免签梦碎!竟指责中国刻意针对印度

墨策史
2026-06-26 01:05:05
跌得面目全非,4万股东最后亏得只剩零头,今日3股收盘后退市!

跌得面目全非,4万股东最后亏得只剩零头,今日3股收盘后退市!

丁丁鲤史纪
2026-06-29 18:09:54
正式放弃!6200万大合同!36小时内尽快交易

正式放弃!6200万大合同!36小时内尽快交易

篮球教学论坛
2026-06-29 19:53:10
哭不出来别尬演!这次剃光头自毁形象的马苏,给内娱狠狠上了一课

哭不出来别尬演!这次剃光头自毁形象的马苏,给内娱狠狠上了一课

翰飞观事
2026-06-29 22:02:34
追觅办公区空荡荡,员工离职内幕被扒,俞浩近况曝光,遭网友打脸

追觅办公区空荡荡,员工离职内幕被扒,俞浩近况曝光,遭网友打脸

谭谈社会
2026-06-28 00:11:35
普京:将确保国家人民安全,领土不受侵犯

普京:将确保国家人民安全,领土不受侵犯

看看新闻Knews
2026-06-29 09:02:24
中老年人同居一定要记住:没有生理上的需求,就不要再去搭伙了?

中老年人同居一定要记住:没有生理上的需求,就不要再去搭伙了?

游戏收藏指南
2026-06-05 17:44:29
600163,拟投重要项目!总投资超70亿元!

600163,拟投重要项目!总投资超70亿元!

证券时报e公司
2026-06-29 21:47:04
老胡这次彻底刷新了坏的下限!

老胡这次彻底刷新了坏的下限!

胖胖说他不胖
2026-06-08 11:50:14
GPT-5.6发布,一大批AI公司要倒闭了

GPT-5.6发布,一大批AI公司要倒闭了

互联网早读课
2026-06-29 08:10:49
热刺即将报价9970万欧元求购托纳利

热刺即将报价9970万欧元求购托纳利

甜份超标的我
2026-06-30 00:08:51
有人60岁就脑梗,有人一辈子不会脑梗,医生直言:关键在于5件事

有人60岁就脑梗,有人一辈子不会脑梗,医生直言:关键在于5件事

健身狂人
2026-06-26 02:16:28
2026-06-30 01:39:00
芒果师兄 incentive-icons
芒果师兄
一起学习,共同成长,让生信助力科研。
521文章数 68关注度
往期回顾 全部

科技要闻

杀疯了!深圳一天出两家200亿具身智能公司

头条要闻

美从俄乌战场抽身 金灿荣:美国有个大战略目标已完成

头条要闻

美从俄乌战场抽身 金灿荣:美国有个大战略目标已完成

体育要闻

他和伊朗队,再次赢得全世界的尊重

娱乐要闻

跟风电影《给阿公的牛肉丸》开机

财经要闻

万达广场批量易主 多位投资人正式入局

汽车要闻

全新宝马iX3长轴版将于成都车展预售 四季度交付

态度原创

房产
艺术
本地
时尚
公开课

房产要闻

你敢想?海口房地产投资,暴跌5成!

艺术要闻

16幅 冉茂芹小幅风景油画写生

本地新闻

贵州小城的新目标:举办“村超”世界杯!

好特别的白色造型,太高级了

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版