我是靠谱客的博主 敏感面包,最近开发中收集的这篇文章主要介绍label字体颜色_R高级画图(0903)关于字体、溪流图、ggplot2主题等设置 (tidyTuesday)...,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
在使用ggplot2画图的时候如何导入字体,在使用ggplot2的时候如何处理复杂的控件、主题等,今天将一一介绍。
part1 对ggplot2使用字体。
这个难点肯定就是导入字体,然后在ggplot2里面渲染就行了。
使用的包就是extrafont包。这个包可以方便的导入系统的字体,也可以指定下载的文件然后安装,总之非常简单,直接使用install.packages("extrafont")就可以安装,然后可以在加载包之后,使用font_import()就可以一气呵成。唯一的不足的地方就是等待⌛️时间比较长。当然是一劳永逸的。
install.packages("extrafont")
library(extrafont)
font_import()
part2 案例讲解,
今天讲解的是tidyTuesday的一个图,这个图还算比较简单,但是细节非常多。
以前写代码有的马马虎虎,注释写的不清楚,导致别人阅读代码的时候(尤其是对刚入门的非常不友好),当代码多的时候,看着是真的累,我现在学JavaScript,看的js代码真的头大。所以我以后决定将我的代码注释写的尽可能细致。
第一部分是安装ggstream。这个包是用来画中间的主体内容(占且叫她溪流图)。
install.packages("remotes") # 用来安装一些包的,
remotes::install_github("davidsjoberg/ggstream") # 从github安装包
第二部分是下面是加载包
#Load packages
library(tidyverse)
library(colorspace) # 这个是用来调颜色的
library(ggstream)
library(extrafont) # 用来画字体的
第三部分是加载数据的
#Import data
tuesdata <- tidytuesdayR::tt_load('2020-09-01')
tuesdata <- tidytuesdayR::tt_load(2020, week = 36)
key_crops <- tuesdata$key_crop_yields
如果学R的竟然不知道这个tidyTuesday的,那你还算别继续看这个文章了。
上面主要是用来从Tuesday下载数据。
数据长得如下:
第四部分是数据整理的部分
#Wrangle data
NZ_yield <- key_crops %>%
filter(Code == "NZL") %>%
# 筛选Code等于NZL的
pivot_longer(cols = 4:last_col(), # 将数据从宽类型转换成长数据,这是因为ggplot2要求的,如果要画多类别的数据,转换成长数据是最方便的
names_to = "crop",
# 将转换为类别的这一列的名字改为“crop”
values_to = "crop_production") %>%
# 将值这一列的名字改为cropproduction
mutate(crop = str_remove_all(crop, " (tonnes per hectare)")) %>%
# 将数据框的crop列中含有(tonnes per hectare)都删掉
set_names(nm = names(.) %>% tolower()) %>% # 将数据框的列名字都改为小写的
filter(!is.na(crop_production)) # 筛选crop——production为空的
第五部分是ggplot2的主题部分,也就是用来控制ggplot2的布局、字体、背景等。
#Set theme
font_family1 <- 'Times New Roman' #'Century Gothic' # 这里设置默认字体为新罗马
font_family2 <- 'Times New Roman'
background <- "#39393A" # 设置背景颜色
text_colour1 <- "white" # 设置文本1的颜色
text_colour2 <- "black" # 设置文本2 的颜色
axis_colour <- "white" # 设置参考线的颜色(注意我这里说的是参考线,并不是坐标轴)
theme_style <- theme(text = element_text(family = font_family1), # 这里是设置ggplot2的全部字体
rect = element_rect(fill = background), # 这里是设置所有的矩形元素填充颜色
plot.background = element_rect(fill = background, color = NA), # 设置背景颜色
plot.title = element_text(size = 30, colour = text_colour1), # 设置标题的字体 size为d大小,colour为颜色
plot.subtitle = element_text(size = 16, colour = text_colour1), # 副标题
plot.caption = element_text(size = 12, colour = text_colour1, margin=margin(60,0,0,0)), # 右下角的标注
panel.background = element_rect(fill = background, color = NA), # 设置面板背景(也就是绘图区域的背景)
panel.border = element_blank(), # 绘图区域的边框
panel.grid.major.y = element_blank(), # 绘图区域的网格
panel.grid.major.x = element_blank(), # 绘图区域x主网格
panel.grid.minor.x = element_blank(), #绘图区域的x次要网格
plot.margin = unit(c(1, 1, 1, 1), "cm"), # ggplot2的边框
axis.title = element_blank(), # 设置x,y轴的标签为空
axis.text.x = element_text(size = 14, colour= text_colour1), # 设置x轴刻度的标签
axis.text.y = element_blank(), # 设置y轴刻度的标签为空
axis.line = element_blank(), # 设置轴的线为空
legend.text = element_text(size = 10, colour= text_colour1), # 设置图例的字体
legend.title = element_blank(), # 图例的名字
legend.box = "horizontal", # 图例的摆放方向
legend.position="top", # # 图例的摆放位置
legend.justification = "left") # 用来固定图例的位置,在画图区域内还算画图区域外
theme_set(theme_classic() + theme_style) # 设置为全局的主题
第六部分是画图(也就是将数据传递给ggplot2)
#Set colour palette
cols <- c("#F3D2B3", "#F2B8A2", "#F38C8D", "#5E9DB8", "#ADA296", "#2C5F72")
#Plot data
ggplot(NZ_yield, aes(year, crop_production, fill = factor(crop))) +
geom_stream(method = "raw", bw = .7) +
scale_fill_manual(name = "crop", values = cols) + # 设置填充颜色
scale_x_continuous(breaks = seq(1960, 2020, 10)) + # 设置x轴的分割
geom_vline(data = tibble(x = c(1960, seq(1970, 2010, by = 10), 2020)),
aes(xintercept = x), color = axis_colour, size = .1) + # 因为网格都被取消了,现在需要使用geom——vline来模拟网格,哈哈哈,我也经常干
geom_segment(aes(x=1961,xend=1982,y=45,yend=45),size = .5, color="white", linetype = 2) + # 注意到文字的上的虚线。这个就是画虚线的
annotate("label", x = 1971, y = 45, size = 6, fontface = "italic", label.size=NA,
color = text_colour1, family = font_family2, fill = background,
label =
"Golden Years of Agriculture") + # 添加文本注释
geom_segment(aes(x=1984,xend=2018,y=45,yend=45),color="white", linetype = 2) +
annotate("label", x = 2001, y = 45, size = 6, fontface = "italic", label.size=NA,
color = text_colour1, family = font_family2, fill = background,
label =
"Deregulation and Export Growth") +
geom_curve(aes(x = 1975, y = -35, xend = 1975, yend = -17),
arrow = arrow(length = unit(0.3, "cm")), size = 0.5,
color = "white", curvature = -0.3) + # 添加曲线,就是左下角的带有➡️的
annotate("label", x = 1975, y = -35, size = 3.5, color = text_colour1, family = font_family1, fill = background,
label =
"Trials for growing soybeans occurrednin the 1970s, but evidence suggested itnwasn't going to be a commerciallynviable crop"
) +
annotate("text", x = 1965.5, y = 0, size = 3.5, color = text_colour2, family = font_family1,
label =
"Majority of potatoes werensold fresh and preparednat home during the 1960s"
) +
annotate("text", x = 1995, y = 0, size = 3.5, color = text_colour2, family = font_family1,
label =
"Exporting Potatoes begannin 1991 and have steadilyngrown since then"
) +
annotate("text", x = 2005, y = 5, size = 3.5, color = text_colour2, family = font_family1,
label = "By 2007 over half of NZ'snpotato crop was processedninto chips and fries") +
annotate("text", x = 2005, y = -15, size = 3.5, color = text_colour2, family = font_family1,
label = "Additionally, Potatoes werenNZ's second highest earningnvegetable in 2007 (NZ$94.2M).nOnions took the crown as thenhighest earner") +
labs(title = "Kiwis and their Potatoes",
subtitle = "New Zealand Crop Yields (tonnes per hectare) Since 1961",
caption = "Visualisation: @JaredBraggins | Sources: Our World in Data, Te Ara") +
guides(fill = guide_legend(nrow = 1)) # 控制图例的排数。,就一排
第七部分保存图片。
#Export plot
ggsave("NZ Crops.png", dpi = 700, width = 15, height = 9)
关于保存图像缩放比例的,可以看我的另外一个文章:
圆子:关于ggplot2缩放问题的解决zhuanlan.zhihu.com最后
以上就是敏感面包为你收集整理的label字体颜色_R高级画图(0903)关于字体、溪流图、ggplot2主题等设置 (tidyTuesday)...的全部内容,希望文章能够帮你解决label字体颜色_R高级画图(0903)关于字体、溪流图、ggplot2主题等设置 (tidyTuesday)...所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复