• 2022-05-03 19:43:11

### R语言画图——ggplot2画截断柱状图及R语言从图片中取色

1、ggplot2画截断柱状图（使用的R包： ggbreak
代码如下：

##这里是省略y轴110到140之间的部分
scale_y_break(c(110, 140),
scale = 0.6,
space = 0.1,
ticklabels = c(200, 400),
expand = expansion(mult = c(0, 0.05)))


2、R语言从图片中取色（使用R包：RImagePalette
代码如下：

##先安装一下这个R包
install.packages("RImagePalette")
library(RImagePalette)
##读取jpg或png图片
# display_image(a) ##这里是查看该图片
## 取色
mycolor<-image_palette(a,n=30)
scales::show_col(mycolor)
mycolor

更多相关内容
• 最全的条形绘制方法总结，毕业论文绘图必须教程，方便快捷解决你的绘图困扰
• 柱状图 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, ...

## 柱状图

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，调整柱状图柱子的间距

我们在使用ggplot2绘制柱状图时，经常会遇到两个柱子之间距离过宽，通过调整柱子宽度去调整间距时又会失去美感，像下面这样

data
# A tibble: 5 x 2
lable number
<chr>  <dbl>
1 a          5
2 b          6
3 c          4
4 d          8
5 e         10

ggplot(data,aes(lable, number, fill='#E29969'))+
geom_bar(stat="identity",position="dodge",width = 0.05)#图一

ggplot(data,aes(lable, number, fill='#E29969'))+
geom_bar(stat="identity",position="dodge",width = 0.3)#图二


图一

图二

那么如何在不改变柱子宽度的情况下调整柱子之间的间距呢？其实可以将横坐标转换成连续的变量，这样就可以通过调整变量的大小改变柱子的间距，示例如下

data
# A tibble: 5 x 3
lable     X number
<chr> <dbl>  <dbl>
1 a       0.2      5
2 b       0.3      6
3 c       0.4      4
4 d       0.5      8
5 e       0.6     10

# 图三
ggplot(data,aes(X, number, fill='#E29969'))+
geom_bar(stat="identity",position="dodge",width = 0.05)+ #设定柱子宽度
scale_x_continuous(limits=c(0.1,0.7),breaks=c(0.2,0.3,0.4,0.5,0.6), labels = c('a','b','c','d','e'))#设置x轴的范围，将x轴的刻度替换成相应的标签

#图四
ggplot(data,aes(X, number, fill='#E29969'))+
geom_bar(stat="identity",position="dodge",width = 0.05)+#设定柱子宽度
scale_x_continuous(limits=c(0.1,1.1),breaks=c(0.2,0.3,0.4,0.5,0.6), labels = c('a','b','c','d','e'))#设置x轴的范围，将x轴的刻度替换成相应的标签


可以调整X轴的范围来调整柱子的距离

图三

图四

展开全文
• stat=”“identity”:指定了柱状图的高度（y） fill=obj：填充的柱状图的颜色 修改柱状图的宽度 ggplot(data=data1,mapping=aes(x=obj,y=val,fill=obj,group=factor(1)))+ geom_bar(stat="identity",width=...
      版权声明：本文为博主原创文章，未经博主允许不得转载。          https://blog.csdn.net/qq_34023608/article/details/51852211        </div>
<div id="content_views" class="markdown_views prism-atom-one-dark">
<!-- flowchart 箭头图标 勿删 -->
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
<path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path>
</svg>
<p></p><div class="toc"><div class="toc">


# 柱状图

## 绘制柱状图

### 数据准备

这里是ggplot2中的diamonds数据框中的随机抽取100条数据：

library(ggplot2)
set.seed(100)
small<-diamonds[sample(nrow(diamonds),100),]
small<-within(small,{
obj<-NA
val<-NA
obj<-c("a","b","c","d","e","f",rep(NA,94))
val<-c(2,1,3,4,7,5,rep(NA,94))}


12345678

)

### 画出初始图：

data1=na.omit(small[c("obj","val")])
ggplot(data=data1,mapping=aes(x=obj,y=val,fill=obj,group=factor(1)))+
geom_bar(stat="identity")


123

注释：
stat=”“identity”:指定了柱状图的高度（y）
fill=obj：填充的柱状图的颜色

### 修改柱状图的宽度

ggplot(data=data1,mapping=aes(x=obj,y=val,fill=obj,group=factor(1)))+
geom_bar(stat="identity",width=0.5)


12

注释：
width=0.5

### 修改柱形图的顺序

data1<-within(data1,{
obj<-factor(obj,levels=c("e","f","b","c","d","a"))
})

ggplot(data=data1,mapping=aes(x=obj,y=val,fill=obj,group=factor(1)))+
geom_bar(stat="identity")


123456

注释：
柱状图的顺序是根据因子水平顺序来排列的：
obj<-factor(obj,levels=c(“e”,”f”,”b”,”c”,”d”,”a”))

### 柱条上添加文字

ggplot(data=data1,mapping=aes(x=obj,y=val,fill=obj,group=factor(1)))+
geom_bar(stat="identity")+
geom_text(aes(label = val, vjust = -0.8, hjust = 0.5, color = obj), show.legend = TRUE)


123

注释：
vjust:柱条上文字的纵坐标的位置（垂直位置，以柱条顶面线为原点）
hjust:柱条上文字的横坐标的位置（水平位置，以柱条顶面线的中点为原点）
show.legend:此文本是否包含到图例之中（NA(default),FALSE,TRUE）

### 主题

这里需要先安装ggthemes包。

library(ggthemes)
ggplot(data=data1,mapping=aes(x=obj,y=val,fill=obj,group=factor(1)))+
geom_bar(stat="identity")+
geom_text(aes(label = val, vjust = -0.7, hjust = 0.5, color = obj), show.legend = TRUE)+
theme_economist()


12345

注释：
在ggthemes中有很多的各种主题，在这里只使用了其中的theme_economist主题

### 对坐标轴进行限制

ggplot(data=data1,mapping=aes(x=obj,y=val,fill=obj,group=factor(1)))+
geom_bar(stat="identity")+
geom_text(aes(label = val, vjust = -0.7, hjust = 0.5, color = obj), show.legend = TRUE)+
theme_economist()+
ylim(min(data1$val,0)*1.1,max(data1$val)*1.1)


12345

展开全文
• 32.R语言ggplot2和ggtext实现条形加文本标注教程.pdf
• R语言ggplot2可视化柱状图添加数值说明并控制文本、数值字体大小、轴标签字体大小实战 目录 R语言ggplot2可视化柱状图添加数值说明并控制文本、数值字体大小、轴标签字体大小实战 #控制文本、数值字体大小、轴...
• R语言ggplot2可视化将柱状图（条形图）对应的统计数值添加到柱体的上方实战 目录 R语言ggplot2可视化将柱状图（条形图）对应的统计数值添加到柱体的上方实战 #仿真数据 #柱状图（条形图）对应的统计数值添加到...
• 一个使用 ggplot2 创建排序的简单包。 安装 安装包如下： install.packages( ' devtools ' ) library( devtools ) install_github( ' fawda123/ggord ' ) library( ggord ) 引文 请引用当前版本如下： 马库斯·...
• 偶然看到了这个链接里有几张可以用来练习ggplot2，就试着写了一下代码，这里记录一些我认为有些难度的与代码。 习题Problem 2 习题描述 Using the mpg dataset in the ggplot2 package, replicate the plot ...
• 这篇文章大致会讲一些ggplot2的大致用法，包含了各类图形，如折线图、柱状图、箱型图等等的画法。其中会包含一些代码知识，比如形状、颜色和与数据对应的解释。内容会处于不断完善的过程中，欢迎各位提出建议！ ...
• '柱状图' )+ scale_fill_discrete(name= '图例' , #图例项（或者用scale_fill_discrete) labels=levels(iris1_2 $variable )[c( 4 , 3 , 2 , 1 )])+ #颜色 scale_x_discrete(name= '类别' , #x轴... • ## ggplot2——柱状图 万次阅读 2015-08-20 00:47:39 （更多关于图例、坐标系等内容请见：R、ggplot2、shiny 汇总） 初始图样：library(ggplot2) library(ggthemes) dt = data.frame(obj = c('A','D','B','E','C'), val = c(2,15,6,9,7)) p = ggplot • ## ggplot2画柱状图 万次阅读 2018-08-01 15:41:12 柱状图一般有三种形式： 填充式 堆积式 并列式 填充式 1）填充式需要设定几何对象geom_bar()的参数position='fill'（堆叠数据，百分比展示） 首先数据格式是这样的： library(ggplot2) data&lt;-... • 2.以单个柱状图为元素，做出柱状图，原始数据如表1，代码如图1： 表1 原始数据表 supp does len SD SE OJ 0.5 13.2 4.5 2.1 OJ 1 22.7 3.9 2 OJ 2 26.1 2.7 ... • 一直想有机会好好梳理下ggplot的图形，但是一般情况下ggplot常用的图形还是一些线图和柱状图，但是使用ggplot的好处（对比excel）就是R在处理大数据可以不用切换软件直接截取，但是坏处就是相对excel的某些时刻略有... • ggplot(data = rate,aes(x=reorder(地区,地区生产总值.)))+ geom_bar(aes(y=地区生产总值.,fill=地区),stat = "identity")+ labs(title = "2015年山东各地市生产总值及占比情况")+ geom_text(aes(label=rate$地区...
• library(ggplot2) # 我们拿到这样的数据 name ("多","中","少","中","少") data (name) # 转化为数据框p2 <- ggplot(data,aes(x=name)) + geom_bar(width=0.7,fill=rgb(50,163,221,maxColorValue=
• R语言ggplot2可视化改变柱状图（条形图）的填充色实战：默认的颜色为灰色、改变柱状图（条形图）的填充色、设置每个柱子（条形）使用不同的色彩 目录 R语言ggplot2可视化改变柱状图（条形图）的填充色实战：默认...
• R语言ggplot2可视化柱状图并自定义柱体的宽度（通过变量指定条形的宽度）实战、条形图并自定义条形的宽度实战
• image.png之前有读者在公众号留言问开头的应该如何画？我第一眼看到这个简单的理解为了堆积柱形，加折线。所以基本的想法就是构造两份数据来画这个，第一份用来画堆积柱形，第二份用来画折线。但是...
• 绘制带误差线的bar 利用ggplot2 数据格式转换并做统计计算 绘制图形 ## 模拟 ## 导入包 library(ggplot2) library(reshape2) library(RColorBrewer) ## 载入数据 df <- iris df <- melt(df...
• ggplot2 画分面的柱状图 直接上代码： df=read.table(&amp;quot;class.txt&amp;quot;,header=TRUE) ggplot(data = df, mapping = aes(x = factor(samples), y = y, fill = class)) + geom_bar(stat= '...
• ggplot2柱形/条形顺序调整要点代码 要点 ggplot2条形横坐标顺序以及图例顺序如何调整，先将横坐标因子化为图例中想要的顺序，然后使用在aes中使用reorder函数改变中的横坐标顺序 代码 df%>% mutate...
• 接下来我们要利用ggplot2包画分组柱状图，代码如下： > library(ggplot2) > p ggplot(mydata, aes(x=year,y=size,fill=supp) ) + geom_bar(position= "dodge" ,stat= "identity" ) > p + xlab( "年份" )...
• ggplot(data = dataplot, mapping = aes(x=group,y=dataplot,fill=group),main = "test") + geom_bar(stat = "identity",width = 0.5) + labs(x="groups",y="number") + geom_errorbar(aes(ymin = dataplot-datastd,...
• 首先，我创建了一些虚拟数据和条形，可以根据需要进行修改。windows(4,4)dat Sub = c("A", "B", "A", "B"),Value = c(3,5,7,8))## Define base plotp ggplot(dat, aes(Group, Value)) +theme_bw() + theme(panel....
• 给条形填充纹理图案

...