前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ggplot2优雅的绘制轨道图

ggplot2优雅的绘制轨道图

作者头像
R语言数据分析指南
发布2022-12-20 19:54:02
4500
发布2022-12-20 19:54:02
举报
文章被收录于专栏:R语言数据分析指南

❝本节来绘制一个简单的绘图案例;暂且称之为轨道图;下面小编就通过一个详细的案例介绍如何绘制此图;关于此图的实践应用以后在做介绍

加载R包

代码语言:javascript
复制
library(tidyverse)
library(systemfonts)
library(colorspace)

导入数据

代码语言:javascript
复制
rent <- readr::read_csv('rent.txt')

定义调色板

代码语言:javascript
复制
colors <- wesanderson::wes_palettes$Zissou1

数据清洗

代码语言:javascript
复制
rent_sf_2012 <- rent %>% 
  filter(year == 2012, city == "san francisco", beds == 1, baths == 1)

top_10_nhoods <- rent_sf_2012 %>%  
  count(nhood, sort = TRUE) %>% 
  head(10) %>% 
  pull(nhood)

整合数据

代码语言:javascript
复制
plot_data <- rent_sf_2012 %>% filter(nhood %in% top_10_nhoods) %>% 
  group_by(nhood) %>% 
  summarise(
    max_price = max(price),
    q1 = quantile(price, 0.25),
    q3 = quantile(price, 0.75)) %>% 
  mutate(nhood = fct_reorder(nhood, max_price)) %>% 
  arrange(desc(nhood)) %>% 
  mutate(y_mid = 10:1,y_start = y_mid - 0.30,
         y_end = y_mid + 0.30)

定义标签

代码语言:javascript
复制
labels <- c("Pacific Heights", "Marina", "South Beach", "North Beach", "Russian Hill",
            "Nob Hill", "San Francisco", "Inner Sunset", "Outer Sunset", "Inner Richmond")

数据可视化

代码语言:javascript
复制
ggplot(plot_data) +
  geom_col(aes(max_price, nhood), width = 0.4, fill = colors[2]) +
  geom_rect(aes(xmin = q1, xmax = q3, ymin = y_start, ymax = y_end),
            fill = colors[2], alpha =1) +
  geom_rect(aes(xmin = q1, xmax = q1-30, ymin = y_start, ymax = y_end),
            fill = darken(colors[1],0)) +
  geom_rect(aes(xmin = q3, xmax = q3 + 30, ymin = y_start, ymax = y_end),
            fill = darken(colors[1],0)) +
  geom_text(aes(x = 20, y = y_end + 0.05, label = labels),
            color = "black", size =3, hjust = 0) +
  annotate("text", x = 3500, y = 10, 
           label = str_wrap("Price range covering
                            middle 50% of all quotes",20),
           color = "black",size =2.5, lineheight=1) +
  scale_x_continuous(labels = scales::comma_format(scale = 1/1000, suffix = "k")) +
  coord_cartesian(clip = "off") +
  theme_minimal(base_size=10) +
  theme(
    plot.margin = margin(0.2,0.2,0.2,0.2,unit="in"),
    plot.background = element_rect(fill = "grey98",color = "grey98"),
    axis.text.x = element_text(face = "bold", color = "black"),
    axis.text.y = element_blank(),
    axis.title = element_blank(),
    panel.grid.major.x = element_line(linetype = "longdash"),
    panel.grid.minor = element_blank(),
    panel.grid.major.y = element_blank())
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-11-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 R语言数据分析指南 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ❝本节来绘制一个简单的绘图案例;暂且称之为轨道图;下面小编就通过一个详细的案例介绍如何绘制此图;关于此图的实践应用以后在做介绍
  • 加载R包
  • 导入数据
  • 定义调色板
  • 数据清洗
  • 整合数据
  • 定义标签
  • 数据可视化
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档