【R】ggplot2绘图技巧

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了【R】ggplot2绘图技巧相关的知识,希望对你有一定的参考价值。

参考技术A ggplot2|详解八大基本绘图要素

memory.limit()

memory.limit(100000)

getwd()

setwd("E:/科学论文/2018Winter_PM25年际变化_SDEI/20190315 文章绘图/Fig_2 重点区域年际变化/")

jpeg("Fig_2_Boxplot_each region_V2.jpeg",width=600,height=600)

p<-ggplot(PM_data,aes(x=region,y=PM,fill=region))+geom_boxplot()+

  theme(legend.position="none",axis.text=element_text(size=20),axis.title=element_text(size=20,face="bold")

        ,plot.title = element_text(size=20,hjust = 0.5))+

  labs(title = "(a)箱型图",x="  ",y=expression(PM[2.5]*'  ('*mu*"g /"*m^3*')'))

  #ylab(expression(PM[2.5]*'  ('*mu*"g /"*m^3*')'))+ggtitle("(a)箱型图")+xlab("  ")

p

dev.off()

getwd()

setwd("E:/科学论文/2018Winter_PM25年际变化_SDEI/20190315 文章绘图/Fig_2 重点区域年际变化/")

jpeg("Fig_2_line chart_V2.jpeg",width=600,height=600)

p<-ggplot(data=PM_data,aes(x=year,y=PM, group=region))+

  geom_line(aes(color=region),lwd=2)+

  geom_point()+

  theme(legend.position="bottom",axis.text=element_text(size=20),axis.title=element_text(size=20,face="bold")

          ,plot.title = element_text(size=20,hjust = 0.5)

        ,legend.text = element_text(size = 16, face = 'bold')

        ,legend.title=element_blank())+

  labs(title = "(b)区域年均浓度时间序列",x="  ",y=expression(PM[2.5]*'  ('*mu*"g /"*m^3*')'))

p

dev.off()

(1)library(patchwork)

R | ggplot拼图 —— patchwork

R小tip(六)ggplot2拼图

(2)这个效果更好

ggplot2|ggpubr进行“paper”组图合并

R 函数学习 - colorRamp() 和 colorRampPalette()

R 语言配色收集

#设置自己想要的colorbar内容

color_bar <- colorRampPalette(c("#ffffff","#c0c0c0",   "#ffff80","#d0d000",  "#00ff00","#00bb00",  "#008000"))

#带n可以设置n个颜色,做梯度

p1<-ggplot() +#一大堆其他内容

  scale_fill_gradientn(colors=color_bar(12))+ #带n可以设置n个颜色,做梯度

ggplot2 |legend参数设置,图形精雕细琢

【r<-ggplot2】修改x和y轴刻度

R ggplot2 - 简单绘图 - 无法指定对数轴限制

【中文标题】R ggplot2 - 简单绘图 - 无法指定对数轴限制【英文标题】:R ggplot2 - Simple plot- cannot specify log axis limits 【发布时间】:2012-09-09 20:37:31 【问题描述】:

我正在尝试在 ggplot2 中的 R 中创建一个简单的密度图。这是我的代码,效果很好。

d <-  ggplot(result, aes(x=result$baseMeanA)) 
d + geom_density(colour="darkgreen", size=2, fill="darkgreen") + 
scale_x_log10() + scale_y_continuous(limits = c(0, 0.45))

问题是我无法将 x 轴调整为负数。

scale_x_log10(limits= c(1, 10000))

效果很好,但是

scale_x_log10(limits= c(-1, 10000))

根本不工作!它给了我这个错误:

if (zero_range(range)) 中的错误:需要 TRUE/FALSE 的缺失值

请帮忙!

【问题讨论】:

只是猜测,但也许您希望原始比例的限制从 0.1 变为 10000(即 log10(x) 从 -1 变为 5)?大概您不希望 log10(x) 从 -1 变为 10000,因为上限将是 10^10000(一个 非常 大的值,因为大约有 10^80 个原子在可观察的宇宙中en.wikipedia.org/wiki/Observable_universe ...)如果我是对的,那么你想要scale_x_log10(limits=c(0.1,1e5)) 是的,我想我现在明白了。我不能在对数刻度中使用负数。谢谢。我现在知道我需要做什么了,我需要在结果中添加一个像 1 或 0.1 这样的伪数,这样它在视觉上看起来是正确的,否则我会以某种方式丢失所有非常小的数字。 【参考方案1】:

e^y 不能为负数。指数常数 e 是正数,而 y 只是一个指数。根据数学定义:

log(x) = y x = e^y

这正是为什么如果 x 为负数,R 无法计算 log(x) 的原因。它只是违反数学定义。

我希望这有助于理解为什么这个情节给你带来了麻烦。

【讨论】:

【参考方案2】:

如果限制的范围应部分低于零,您可以对变量进行 log10 转换并指定连续刻度的限制:

ggplot(result, aes(x=log10(baseMeanA))) +
   geom_density(colour="darkgreen", size=2, fill="darkgreen") + 
   scale_x_continuous(limits = c(-1, 10000) + 
   scale_y_continuous(limits = c(0, 0.45)) +

【讨论】:

【参考方案3】:

您尝试做的事情没有多大意义,不是吗?负数的对数不是我们可以在 R 中表示的东西

R> log(-1)
[1] NaN
Warning message:
In log(-1) : NaNs produced

那么R应该把轴画到哪里呢?

【讨论】:

是的,你可能是对的。我不知道。我想我现在知道要解决我的问题,我需要在结果中添加一个伪数,以便我可以直观地查看它。

以上是关于【R】ggplot2绘图技巧的主要内容,如果未能解决你的问题,请参考以下文章

R语言绘图(ggplot2、ggpurb)从入门到精通06--柱状图美化之宽度调节

R语言数据绘图学习(0x01)-安装ggplot2与尝试

r R pca绘图ggplot2

R:ggrepel,ggplot2 绘图区域上方的标签

R语言绘图:ggplot2绘制ROC

R语言绘图——数据可视化ggplot2 介绍和主要的参数