R画柱形图:调整坐标轴标签顺序,字体,坐标轴粗细以及在柱子顶端加

2022-10-10  本文已影响0人  纵纵纵小鸮

******Rstudio和R要放在同一个目录下!!同一个!!同一个!!!以及可以隔段时间更新下R和Rstudio,否则会哭。

1.调整坐标轴标签顺序:

将x轴或y轴转换为因子(factor)并通过levels指定其顺序,例:

data$Type <- factor(data$Type,levels=c("DSD","WGD","TD","PD","TRD"))

###Type是我数据中的y轴

2.使用RGB颜色设置,当只有颜色没有颜色代码时,我是先使用qq截图的功能获得RGB值,再传入R,或许也可以使用PS直接获取十六进制值,应该会更方便。

c1<-rgb(r=232,g=138,b=140,maxColorValue = 255)

c2<-rgb(r=84,g=142,b=84,maxColorValue = 255)

c3<-rgb(r=251,g=174,b=3,maxColorValue = 255)

c4<-rgb(r=52,g=141,b=231,maxColorValue = 255)

mycolor<-c(c1, c2, c3, c4)

3.设置坐标轴标签字体

使用family参数可以设置字体,windowsFonts()和font_families()可以查看字体:

我想要Times New Roman,所以设置

geom_text(aes(x=value,y=Type,fill=variable,label = value),

            family = "serif" ,vjust = 0.5, position = position_dodge(0.9), size = 7, color = 'black')

4.调整坐标轴粗细

使用theme中的axis.line可以对坐标轴的外形进行设置,包括颜色等。

theme(axis.line = element_line(size=1, colour = "black"))    #size调整粗细,colour调整颜色

5.在簇状柱形图顶端加数字

使用geom_text进行设置

geom_text(aes(x=value+1500,y=Type,fill=variable,label = value),family = "serif" ,vjust = 0.5, position = position_dodge(0.9), size = 7, color = 'black') 

我的柱形图是横着的,所以我将数字的位置+1000和图形分离,这个可以自行调整距离;y和fill都跟图形设置保持一致,同样是“serif”新罗马字体,字号用size调整,颜色为黑色。

完整代码如下:

library(ggplot2)

library(reshape2)

library(ggbreak)

library(showtext)

data1<-read.csv("Bar_Data.csv", sep = ",")

data<-melt(data1,id="Type")   ###使用reshape2中的melt糅合数据,使宽数据变为长数据

data$value = as.numeric(data$value)   ##改为数字格式,注意 原本value不能有特殊符号如“,”否则会变成NA;

ca<-rgb(r=232,g=138,b=140,maxColorValue = 255)

cb<-rgb(r=84,g=142,b=84,maxColorValue = 255)

cc<-rgb(r=251,g=174,b=3,maxColorValue = 255)

cd<-rgb(r=52,g=141,b=231,maxColorValue = 255)

mycolor<-c(ca, cb, cc, cd)

mycolor1<-rep(mycolor, each=5, time=1)  ###因为我的柱形图是簇状柱形图,5类,因此每个颜色复制5份;

windowsFonts()   ##查看字体font_families()    ##查看字体

data$color <- mycolor1

data$Type <- factor(data$Type,levels=c("DSD","WGD","TD","PD","TRD"))  ##调整因子顺序

p1<-ggplot(data = data) +

         geom_bar(aes(y=Type,x=value,fill=variable),

          stat = "identity", position = position_dodge())+

          scale_fill_manual(values=mycolor)+

           geom_text(aes(x=value+1500,y=Type,fill=variable,label = value),

           family = "serif",vjust = 0.5, position = position_dodge(0.9), size = 7, color = 'black')

p1

p1+scale_x_break(c(22000, 181500),scales="free")+

  theme_classic()+

  theme(axis.line = element_line(size=1, colour = "black"))+

  theme(axis.text = element_text(family = "serif",size=30,color="black"))

图片如下,一些数字不太完整,后续使用PS补全:

5.当数字中有“,”,可使用gsub替换:

a<-c("234,578", "2382,287", "289734,0284")

b<-as.character(a)

c<-gsub(",", "", b)

c

[1] "234578" "2382287" "2897340284"

上一篇 下一篇

猜你喜欢

热点阅读