-
2021-11-26 08:35:44
柱状图
library(tidyverse) df3 <- tibble( obj = c('LONGGi', 'JINKO', 'TRINA', 'JASO', 'Canadian Solar'), SiliconWafer = c(85, 22, 0, 18, 5), Battery = c(30, 11, 12, 18, 13), Module = c(50, 32, 22, 23, 14), name = factor(obj, levels = c('LONGGi', 'JINKO', 'TRINA', 'JASO', 'Canadian Solar')) ) df31 <- df3 %>% select(!obj) df31 <- df31 %>% pivot_longer(-name, names_to = "var", values_to = "value") df31$var <- factor(df31$var, levels = c("SiliconWafer", "Battery", "Module")) gg3 <- ggplot(df31, aes(x = name, y = value, fill = var)) + geom_blank(aes(y = 90)) + geom_col(width = 0.75, position = position_dodge(0.8)) + geom_text(aes(x = name,y = value + 3,label = value, group = var), position = position_dodge(0.7)) + scale_fill_manual(values = c("#a3daff", "#1ec0ff", "#03a6ff")) gg4 <- gg3 + theme(axis.ticks = element_line(linetype = "blank"), axis.text = element_text(size = 12), panel.background = element_rect(fill = NA), legend.key = element_rect(fill = NA), legend.position = c(0.5167, 0.9), legend.direction = "horizontal") + labs(x = NULL, y = NULL) + geom_hline(yintercept = 0, colour = "#DCDDD8") + geom_blank(aes(y = 90)) + scale_y_continuous(breaks = seq(0, 90, 15)) gg4
eaks = seq(0, 90, 15))
gg4
更多相关内容 -
R语言ggplot2柱状图(条形图)、簇状、并列、百分比绘图方法总结
2021-11-01 20:12:31最全的条形图绘制方法总结,毕业论文绘图必须教程,方便快捷解决你的绘图困扰 -
R语言ggplot2直方图、密度曲线、背景着色、直线与注释
2020-10-31 22:53:14关于基本的直方图设置、纵坐标对数变换以及基本的颜色设置,可以参考R语言ggplot2直方图设置。 本文使用的数据为:R语言自带的mtcars数据集的mpg变量。以下内容中将首先给出目标图片和代码,并逐一解释。欢迎批评...关于基本的直方图设置、纵坐标对数变换以及基本的颜色设置,可以参考R语言ggplot2直方图设置。 本文使用的数据为:R语言自带的
mtcars
数据集的mpg
变量。以下内容中将首先给出目标图片和代码,并逐一解释。欢迎批评指正!
目录
1. 图片及所有代码
# 获取mpg变量的密度 dense = data.frame(density(mtcars$mpg)[c('x','y')]) ggplot(mtcars,aes(x =mpg))+ geom_histogram(aes(y=..density..), color="#88ada6", alpha=.25, fill="#fffbf0", binwidth = 2, center=1)+ geom_density()+ geom_area(data = subset(dense,x >= 10 & x < 15), aes(x, y, fill = "Label 1"), alpha=.4)+ geom_area(data = subset(dense,x >= 15 & x < 20), aes(x, y, fill = "Label 2"), alpha=.4)+ geom_area(data = subset(dense,x >= 20 & x < 25), aes(x, y, fill = "Label 3"), alpha=.4)+ geom_area(data = subset(dense,x >= 26 & x < 30), aes(x, y, fill = "Label 4"), alpha=.4)+ geom_area(data = subset(dense,x >= 30), aes(x, y, fill = "Label 5"), alpha=.4)+ scale_fill_manual("Label title", breaks = c("Label 1", "Label 2", "Label 3", "Label 4", "Label 5"), values = c("Label 1"="#4b5cc466", "Label 2"="#16a95166", "Label 3"="#ffb61e66", "Label 4"="#ff750066", "Label 5"="#c3272b66"))+ labs(title="title", subtitle="subtitle", caption = "caption", x = 'x axis title', y = 'y axis title')+ theme_bw()+ theme(plot.title = element_text(size = 16, face = "bold", hjust = 0.5), plot.subtitle = element_text(size = 12, face = "bold", hjust = 0.5), plot.caption = element_text(size = 12, face = "italic"), axis.text = element_text(size=12), axis.title = element_text(size=14, face="bold"))+ geom_vline(xintercept = 15,linetype = "twodash",color="blue",size = 1)+ annotate("rect", xmin = 10, xmax = 18, ymin = 0.05, ymax = 0.07, alpha = .1, fill="navy")+ annotate("text", fontface = "bold", color="blue", x = 14, y=0.06, label = 'annotation', size=6)
2. 按步骤说明
2.1 最基本的直方图(颜色,柱宽,位置)
首先绘制一个基本的直方图,横坐标为
mpg
的值,纵坐标为密度。额外设置了填充色、边框色、透明度、柱宽、柱子的位置。代码中标注“可以不设置”的部分如无需要均可删除。ggplot(mtcars,aes(x =mpg))+ geom_histogram(aes(y=..density..), # 纵坐标是密度。类似也可以将纵坐标设置为频数(count) color="#88ada6", fill="#fffbf0", # 边框与填充色,可以不设置 alpha=.25, # 透明度,可以不设置 binwidth = 2, # 柱子的宽度。类似得也可以设置柱子的个数,如bins = 30 center = 0) # 柱子与对应横坐标的相对位置。0是指居中对齐。1是指对应数字在柱子的右侧边线。可以不设置
2.2 在直方图上加密度曲线
在上图基础上,可以直接用
geom_density
函数加上密度曲线(代码最后一行)。g=ggplot(mtcars,aes(x =mpg))+ geom_histogram(aes(y=..density..), # 纵坐标是密度。类似也可以将纵坐标设置为频数(count) color="#88ada6", fill="#fffbf0", # 边框与填充色,可以不设置 alpha=.25, # 透明度,可以不设置 binwidth = 2, # 柱子的宽度。类似得也可以设置柱子的个数,如bins = 30 center = 0)+ # 柱子与对应横坐标的相对位置。0是指居中对齐。1是指对应数字在柱子的右侧边线。可以不设置 geom_density() # 密度曲线 g
2.3 添加(修改)标题与横纵轴名称,并修改标题格式。
要设置标题和横纵坐标轴名称,可以通过+
labs
函数。标题,副标题,脚标题,横、纵坐标轴的内容可以分别通过参数title
,subtitle
,caption
,x
,y
来设置。
要设置标题和坐标轴文字的格式,可以在theme
函数中改变plot.title
,plot.subtitle
,plot.caption
.axis.text
,axis.title
这几个变量。假如希望将横纵坐标轴的格式分别设置,也可以将axis.text
换成axis.text.x
或axis.text.y
。
在上图基础上,以下代码设置了labs
和theme
两个部分。g = g+ labs(title="title", subtitle="subtitle", caption = "caption", x = 'x axis title', y = 'y axis title')+ theme(plot.title = element_text(size = 16, face = "bold", hjust = 0.5), plot.subtitle = element_text(size = 12, face = "bold", hjust = 0.5), plot.caption = element_text(size = 12, face = "italic"), axis.text = element_text(size=12), # 坐标轴上的文字 axis.title = element_text(size=14, face="bold")) # 坐标轴标题 g
2.4 添加背景填充并且设置其颜色
首先,我们得到
mpg
的密度,记为dense
。这是一个拥有两列的数据框(data.frame),两列分别代表mpg
的值(x)与其对应密度(y)。# 获取mpg变量的密度 dense = data.frame(density(mtcars$mpg)[c('x','y')])
在上图基础上,我们通过多次调用
geom_area
函数,为处于不同区间的mpg
值(也就是横坐标的值),绘制不同的背景。在每次使用geom_area
函数中,我们改变的参数有:data
:这段背景图所采用的的数据集。下面实例中通过subset
函数选取了密度数据框dense
的子集。fill
:颜色填充。这里填写的是标签的名字,以便在图例中显示。alpha
:透明度。取值在 0 0 0和 1 1 1之间,越小越透明。
g = g + geom_area(data = subset(dense,x >= 10 & x < 15), aes(x, y, fill = "Label 1"), alpha=.4)+ geom_area(data = subset(dense,x >= 15 & x < 20), aes(x, y, fill = "Label 2"),alpha=.4)+ geom_area(data = subset(dense,x >= 20 & x < 25), aes(x, y, fill = "Label 3"), alpha=.4)+ geom_area(data = subset(dense,x >= 26 & x < 30), aes(x, y, fill = "Label 4"), alpha=.4)+ geom_area(data = subset(dense,x >= 30), aes(x, y, fill = "Label 5"), ,alpha=.4) g
2.5 改变背景填充颜色
在上图基础上,通过添加
scale_fill_manual
来改变颜色。其中我们设置了- 图例标题。设置在了函数的第一个变量(我不知道这个变量叫什么,欢迎补充!),也即"Label title"。
breaks
:改变颜色的地方(一个向量)。这里填的是图例名称,如"Lable 1"。values
:颜色(一个向量)。对每个分量,这里采用了”Label 1“=’#4b5cc466‘的方式。也可以直接填写颜色名称。
g = g + scale_fill_manual("Label title", breaks = c("Label 1", "Label 2", "Label 3", "Label 4", "Label 5"), values = c("Label 1"="#4b5cc466", "Label 2"="#16a95166", "Label 3"="#ffb61e66", "Label 4"="#ff750066", "Label 5"="#c3272b66")) g
2.6 添加竖直线条
可以用
geom_abline
添加直线。特别地,可以用geom_vline
和geom_hline
分别添加竖直和水平的线条。为方便记忆,这里的”v"和”h“分别代表"vertical"和"horizontal"(个人理解)。g = g + geom_vline(xintercept = 15,linetype = "twodash",color="blue",size = 1) g
2.7 图中添加文字与矩形注释
在之前的代码基础上,可以通过
annotate
函数添加注释。将geom
变量设为”text“和”rect“分别代表文字与矩形。并且可以调整其位置、大小、颜色等。
以下代码中分别添加了文字与矩形。g = g+annotate(geom = "rect", xmin = 10, xmax = 18, ymin = 0.05, ymax = 0.07, alpha = .1, fill="navy")+ annotate(geom = "text", fontface = "bold", color="blue", x = 14, y=0.06, label = 'annotation', size=6) g
2.8 改变图片背景颜色与线条
通过
theme_bw()
函数来采用ggplot2
为我们提供的一种背景格式。类似的格式还有theme_classic()
等。可以直接参考文首的代码绘制下图。
【注1】:请将”+theme_bw()“这句代码加在对theme
的设置前面,否则它可能覆盖掉theme
的部分设置。例如,如果在前文代码上做如下修改,那么图片的总标题则被移回了最左端。g + theme_bw()
【注2】:为规避上述问题,可以参考ggplot2边框背景去除来手动更改边框与背景。
-
R语言ggplot2直方图设置
2019-08-12 09:31:38用ggplot2画直方图最基本的代码为: ggplot(data=travel)+geom_histogram(aes(x=sale)) 这里面travel是data frame,sale是我要画直方图的数据。 这个时候会出现warning: 这说明他默认了直方图中“柱”的个数,但是...1.基本代码
用ggplot2画直方图最基本的代码为:
ggplot(data=travel)+geom_histogram(aes(x=sale))
这里面travel是data frame,sale是我要画直方图的数据。
这个时候会出现warning:
这说明他默认了直方图中“柱”的个数,但是其实我是可以自己设置的。既可以通过bin的个数设置,也可以通过bin的宽度设置:ggplot(data=travel)+geom_histogram(aes(x=sale),bins=20)
ggplot(data=travel)+geom_histogram(aes(x=sale),binwidth=20)
2.对数变换
我们常常遇到的数据都是偏态的,直方图非常不美观:
这时候可以通过对数变换解决:ggplot(data=travel)+geom_histogram(aes(x=log(sale)))
这里横坐标的值就变成了对数值,如果还希望图片中显示对应的没有对数变换过的值,可以采取如下方式:ggplot(data=travel)+geom_histogram(aes(x=sale))+ scale_x_log10(breaks=c(10,100,300,1e3), labels=c("10", "100","300", "1000"))
3.颜色设置
首先采用theme_classic(),去掉背景
ggplot(data=travel)+geom_histogram(aes(x=sale))+ scale_x_log10(breaks=c(10,100,300,1e3), labels=c("10", "100","300", "1000")) + theme_classic()
然后在geom_histogram()里面用fill设置柱子填充色,用color(也可以是col)设置边框。ggplot(data=travel)+geom_histogram(aes(x=sale), fill="gold",color="white")+ scale_x_log10(breaks=c(10,100,300,1e3), labels=c("10", "100","300", "1000")) + theme_classic()
这里颜色设置除了直接打颜色的名称,也可以采用十六进制颜色编号,以下代码也可以实现上图。ggplot(data=travel)+geom_histogram(aes(x=sale),fill="#FBD84A",color="#FFFFFF")+ scale_x_log10(breaks=c(10,100,300,1e3), labels=c("10", "100","300", "1000")) + theme_classic()
如果在作图时想用一个图片的配色,但是不知道这个颜色的十六进制颜色编号,可以采取以下方法:
- 截图放到ppt里面
- 随便插入一个矩形圆形之类的形状,在设置这个形状颜色的时候,用取色器取之前图片的颜色,得到十六进制颜色编号,如图:
4.坐标轴名称
关于中文坐标轴名称的设置可以参考下文:
https://blog.csdn.net/weixin_45387324/article/details/99284765 -
R语言 ggplot2 柱状图
2020-07-01 00:12:39library(ggplot2) # create a dataset specie <- c(rep("sorgho" , 3) , rep("poacee" , 3) , rep("banana" , 3) , rep("triticum" , 3) ) condition <- rep(c("normal" , "stress" , "Nitrogen") , 4) ...# library library(ggplot2) # create a dataset specie <- c(rep("sorgho" , 3) , rep("poacee" , 3) , rep("banana" , 3) , rep("triticum" , 3) ) condition <- rep(c("normal" , "stress" , "Nitrogen") , 4) value <- abs(rnorm(12 , 0 , 15)) data <- data.frame(specie,condition,value) # Grouped ggplot(data, aes(fill=condition, y=value, x=specie)) + geom_bar(position="dodge", stat="identity")
# library library(ggplot2) # create a dataset specie <- c(rep("sorgho" , 3) , rep("poacee" , 3) , rep("banana" , 3) , rep("triticum" , 3) ) condition <- rep(c("normal" , "stress" , "Nitrogen") , 4) value <- abs(rnorm(12 , 0 , 15)) data <- data.frame(specie,condition,value) # Stacked ggplot(data, aes(fill=condition, y=value, x=specie)) + geom_bar(position="stack", stat="identity")
-
33.ggplot2+ggparttern 条形图纹理图案填充加显著性标注教程.pdf
2021-12-21 12:17:26给条形图填充纹理图案 -
ggplot2绘制直方图
2022-05-03 12:07:57ggplot2绘制直方图 以下数据框包含一列,其中包含两个具有不同均值和相同方差的正态分布,以及一个表示哪些观察属于每个分布的分类变量。 set.seed(3) x1<-rnorm(500) x2<-rnorm(500,mean=3) x<-c(x1,x2... -
R语言ggplot2 柱状图(条形图)xy轴翻转,及排序
2021-04-26 16:40:19ggplot(data = rate,aes(x=reorder(地区,地区生产总值.)))+ geom_bar(aes(y=地区生产总值.,fill=地区),stat = "identity")+ labs(title = "2015年山东各地市生产总值及占比情况")+ geom_text(aes(label=rate$地区... -
R中ggplot2绘制直方图(histogram)
2022-05-22 13:30:03ggplot2绘制直方图 -
基于R的ggplot2使用指南整理(一)——柱状图画法(含代码)
2020-07-12 19:44:41这篇文章大致会讲一些ggplot2的大致用法,包含了各类图形,如折线图、柱状图、箱型图等等的画法。其中会包含一些代码知识,比如形状、颜色和与数据对应的解释。内容会处于不断完善的过程中,欢迎各位提出建议! ... -
13. R——ggplot2 多个图例分离显示方法汇总.pdf
2021-11-10 11:13:3113. R——ggplot2 多个图例分离显示方法汇总.pdf -
ggplot2设置坐标轴范围_R语言ggplot2频率分布直方图小例子
2020-11-20 06:57:56第一步:准备数据将准备用直方图展示的数据整理在excel中,每个变量一列,比如本文用到的例子 将其另存为csv格式。 以上数据来源 https://www.r-graph-gallery.com/220-basic-ggplot2-histogram.html第二步:ggplot2... -
R语言ggplot2绘图——柱状图
2019-05-26 09:11:18stat=”“identity”:指定了柱状图的高度(y) fill=obj:填充的柱状图的颜色 修改柱状图的宽度 ggplot(data=data1,mapping=aes(x=obj,y=val,fill=obj,group=factor(1)))+ geom_bar(stat="identity",width=... -
R语言ggplot2可视化改变柱状图(条形图)的填充色实战:默认的颜色为灰色、改变柱状图(条形图)的填充色、...
2021-11-09 20:26:57R语言ggplot2可视化改变柱状图(条形图)的填充色实战:默认的颜色为灰色、改变柱状图(条形图)的填充色、设置每个柱子(条形)使用不同的色彩 目录 R语言ggplot2可视化改变柱状图(条形图)的填充色实战:默认... -
R中用ggplot2画百分比柱状图
2021-04-12 19:12:30用ggplot2画百分比柱状图 ## 添加字体 library(showtext) ## 为了使ggplot中有中文字体,可根据自己电脑里字体的位置自行添加。 font_add("kt", "/Users/cpf/Library/Fonts/楷体_GB2312.ttf") showtext_auto() # ... -
R语言ggplot2快速入门直方图
2018-09-08 00:22:48R语言ggplot2快速入门直方图 助研科技技术员001编写 我们将用最简单的案例来说明即将说明的各种类型的直方图 若有疑问请咨询QQ3381528417或留言 普通直方图 代码 library(ggplot2) str... -
每周学习ggplot2(一):绘制柱状图与散点图
2021-04-30 23:58:46偶然看到了这个链接里有几张图可以用来练习ggplot2,就试着写了一下代码,这里记录一些我认为有些难度的图与代码。 习题Problem 2 习题描述 Using the mpg dataset in the ggplot2 package, replicate the plot ... -
ggplot 直方图(histogram)
2020-10-30 21:38:09ggplot 直方图(histogram) 重要的参数 参数 含义 position 位置调整参数 bins 直方图的柱子的数目 alpha 设置颜色的程度 breaks 设置柱子的起始、终止大小及每个柱子的宽度 position 位置调整... -
R语言ggplot2可视化:ggplot2可视化直方图(histogram)并在直方图的顶部外侧(top upper)或者直方图内部...
2021-12-13 22:53:28R语言ggplot2可视化:ggplot2可视化直方图(histogram)并在直方图的顶部外侧(top upper)或者直方图内部添加数值标签 -
ggplot2画柱状图
2018-08-01 15:41:12柱状图一般有三种形式: 填充式 堆积式 并列式 填充式 1)填充式需要设定几何对象geom_bar()的参数position='fill'(堆叠数据,百分比展示) 首先数据格式是这样的: library(ggplot2) data<-... -
20. R_ggplot2_调整坐标轴显示范围、标签、测度方法汇总.pdf
2021-11-15 14:33:10详细讲解如何在ggplot2中调整坐标轴的显示方法 -
ggplot2柱形图/条形图顺序调整
2021-04-23 19:41:37ggplot2柱形图/条形图顺序调整要点代码 要点 ggplot2条形图横坐标顺序以及图例顺序如何调整,先将横坐标因子化为图例中想要的顺序,然后使用在aes中使用reorder函数改变图中的横坐标顺序 代码 df%>% mutate... -
ggplot2 调整绘图区域大小
2021-10-16 14:37:51原图 library(ggplot2) library(ggthemes) p ggplot(mtcars, aes(mpg, wt)) + geom_point(aes(colour=factor(cyl))) + guides(color=F) p p + theme_solarized(light=FALSE) + scale_colour_... -
如何用ggplot2做出真正的直方图
2019-01-20 17:35:23问题:当用geom_histogram()或geom_freqpoly()在做频率直方图或频率直线图的时候,发现纵轴显示的是count而不是真正的比例,如果解决这个问题呢? 解决方法:1.在主映射aes()中将取y = ..count../sum(..count..),但... -
R语言ggplot2可视化将柱状图(条形图)对应的统计数值添加到柱体的上方实战
2021-11-03 16:08:41R语言ggplot2可视化将柱状图(条形图)对应的统计数值添加到柱体的上方实战 目录 R语言ggplot2可视化将柱状图(条形图)对应的统计数值添加到柱体的上方实战 #仿真数据 #柱状图(条形图)对应的统计数值添加到... -
【R语言可视化】ggplot2 自定义柱状图
2017-05-25 16:10:25library(ggplot2) # 我们拿到这样的数据 name ("多","中","少","中","少") data (name) # 转化为数据框p2 <- ggplot(data,aes(x=name)) + geom_bar(width=0.7,fill=rgb(50,163,221,maxColorValue= -
R语言使用ggplot2可视化互相覆盖的直方图实战(Overlaying histograms)
2021-11-02 20:43:00R语言使用ggplot2可视化互相覆盖的直方图实战(Overlaying histograms) dat <- data.frame(xx = c(runif(100,20,50),runif(100,40,80),runif(100,0,30)),yy = rep(letters[1:3],each = 100)) ggplot(dat,... -
玩转数据可视化之R语言ggplot2:(一)ggplot2实现箱线图、小提琴图、直方图等图形(快速入门)
2022-04-06 22:12:41玩转R语言ggplot2数据可视化 本系列主要介绍R语言ggplot2的使用 参考资料: ggplot2: Elegant Graphics for Data Analysis 文章目录玩转R语言ggplot2数据可视化1.使用案例数据 ggplot2是R语言数据可视化中的重要库之...