首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在R中用in图绘制双y轴的双y轴线和盒图

在R中用in图绘制双y轴的双y轴线和盒图
EN

Stack Overflow用户
提问于 2020-06-03 03:33:35
回答 1查看 446关注 0票数 0

我正在使用ggplot将盒图和行放在相同的图中。我有两个数据帧,下面是这两个DFs的片段:

代码语言:javascript
复制
 TMA.core variable    value
1      I-5      H&E 356642.6
2      B-1      H&E 490276.9
3      B-13      H&E 460831.8
4      L-11      H&E 551614.2
5      B-6      H&E 663711.8
6      F-10      H&E 596832.8

(有许多变量。)

代码语言:javascript
复制
    TMA.core     Mean        CoV
   I-5 390829.7 0.15181577
   B-1 414909.9 0.21738852
   B-13 500829.8 0.39049256
   L-11 537229.7 0.07387486
   B-6 575698.9 0.44764127
   F-10 589245.2 0.15382864

我想要做的是使用第一个数据帧绘制盒图,然后为相应的TMA核绘制CoV,然后使用geom_line进行连接。我的密码是:

代码语言:javascript
复制
ggplot() +
geom_boxplot(data = Merge_stats_melt, aes(x = reorder(TMA.core, value, FUN = mean), y = value)) + 
geom_line(data = Merge_stas_mean_order, aes(x = reorder(TMA.core, Mean), y = CoV, group = 1)) + 
scale_y_continuous(
# Add a second axis and specify its features
sec.axis = sec_axis(~./1000000, name = 'CoV')
) 

使用这些代码,我可以绘制盒图,但在y= 0时,这条线总是一条水平线。如何解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-03 06:13:06

使用一两个数据帧并不重要。记住要相应地调整y的美学,这是你忘了做的。

代码语言:javascript
复制
library(ggplot2)
library(scales)

双轴理想标度因子的求取

代码语言:javascript
复制
ratio <- max(Merge_stats_melt$value) / max(Merge_stas_mean_order$CoV)

ggplot() +
  geom_boxplot(data = Merge_stats_melt, aes(x = reorder(TMA.core, value, FUN = mean), y = value)) + 
  geom_line(data = Merge_stas_mean_order, aes(x = reorder(TMA.core, Mean), y = CoV*ratio, group = 1)) + 
  scale_y_continuous(labels=comma,
    sec.axis = sec_axis(~./ratio, name = 'CoV')
  ) 

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62164789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档