R 使用秒轴时,控制y轴的最简单方法是什么

R 使用秒轴时,控制y轴的最简单方法是什么,r,ggplot2,R,Ggplot2,我已经阅读了所有关于缩放y轴的文章,其中都有一些额外的步骤,以便在ggplot中使用秒轴时控制y轴限制 我有以下几点意见 structure(list(day = c(1, 3, 5, 7, 9), mean = c(0.000452620431539136, 0.000244953967091816, 0.000409529176828165, 0.000621566432113383, 0.000975471413145951), sd = c(0.000145928952108396,

我已经阅读了所有关于缩放y轴的文章,其中都有一些额外的步骤,以便在ggplot中使用秒轴时控制y轴限制

我有以下几点意见

structure(list(day = c(1, 3, 5, 7, 9), mean = c(0.000452620431539136, 
0.000244953967091816, 0.000409529176828165, 0.000621566432113383, 
0.000975471413145951), sd = c(0.000145928952108396, 7.48403498938327e-05, 
8.70694523628839e-05, 0.000265199022927143, 0.00076194983870935
), group = c("pi", "pi", "pi", "pi", "pi")), row.names = c(NA, 
-5L), class = c("tbl_df", "tbl", "data.frame"))

我运行以下代码:

-ggplot(data=DI.pi.sum, aes(x=day, y=mean)) + geom_bar(stat = "identity", fill = "grey", size = 1.5) +
       geom_errorbar(aes(ymin=mean-sd, ymax=mean+sd), size = 0.1, width=.3,
                     position=position_dodge(1)) +
       geom_line(data=DI.Equi.sum, aes(x=day, y=mean/10000))  +
       geom_ribbon(data = DI.Equi.sum, 
                   aes(x=day, y = mean/10000, ymin=mean/10000-sd/10000, ymax=mean/10000+sd/10000),
                   alpha=0.2, fill = "grey40") +
       theme(panel.grid.major =  element_blank(),
             panel.grid.minor = element_blank(),
             panel.background = element_blank(),
             axis.line = element_line(colour = "black"),
             axis.text.x = element_text(face = "bold", size = 7),
             axis.title.y = element_text(face = "bold", size = 10),
             legend.direction = "vertical", legend.box = "horizontal") +
       scale_size(range = c(5, 15)) +
       scale_x_continuous(breaks = c(1, 3, 5, 7, 9), limits = c(0,10))  +
       scale_y_continuous(limits=c(0, 0.0020), sec.axis = sec_axis(~ . * 10000), name = "pi")  
生成以下绘图:

我不需要秒轴上升到40。如果我能把它提高到20岁,那就太好了

建议


提前感谢。

要用次轴绘制的平均值范围仅为3-6。我已经用一个比例因子变量调整了对ggplot的调用,这样您就可以随意调整次轴的外观。如果比例因子为10000,则次轴的范围为0-20

图书馆GGPLOT2 比例系数=10000 ggplotdata=DI.pi.sum,aesx=day,y=mean+geom_barstat=identity,fill=grey,size=1.5+ geom_errorbaraesymin=平均sd,ymax=平均值+sd,尺寸=0.1,宽度=0.3, 位置=位置1+ geom_linedata=DI.Equi.sum,aesx=日,y=平均值/比例系数+ geom_ribbondata=DI.Equi.sum, aesx=天,y=平均值/比例因子,ymin=平均值/比例因子-sd/比例因子,ymax=平均值/比例因子+sd/比例因子, alpha=0.2,填充=灰色40+ themepanel.grid.major=元素\空白, panel.grid.minor=元素\空白, panel.background=元素\空白, 轴线=元素线颜色=黑色, axis.text.x=element\u textface=bold,size=7, axis.title.y=element\u textface=bold,size=10, legend.direction=垂直,legend.box=水平+ 刻度尺寸=c5,15+ 刻度x连续中断=c1、3、5、7、9,极限=c0,10+ 比例y连续极限=c0,0.0020,秒轴=秒轴~*缩放系数,名称=次轴,名称=π 议论 通常认为,使用双比例y轴(尤其是与钢筋一起使用)是不合适的,应予以劝阻。摘自下面提到的几篇文章

有关该问题的讨论,请参见以下内容:以及Stephen Lever的链接文章:


由v0.3.0于2020年5月25日创建,感谢Peter抽出时间。就我所见,它从刻度上删除了刻度,但没有重新缩放。我要找的是重新缩放,这样我就可以更清楚地显示行中值的下降;次轴现在重新调整范围为0-20。非常感谢您的文章。问题,为什么线的意思和sd没有改变?这是因为转换吗?因为在调用ggplot时,比例因子是恒定的:即在geom_线和geom_功能区以及sec_轴中。如果希望绘图中的线具有更大的y范围,则需要调整sec_轴中的比例因子,当您这样做时,您将开始理解为什么使用双轴绘图可能是一种误导性的数据显示方式!尝试使用3500的比例因子,看看会发生什么。如果回答了您的问题,请单击“接受”勾选
-ggplot(data=DI.pi.sum, aes(x=day, y=mean)) + geom_bar(stat = "identity", fill = "grey", size = 1.5) +
       geom_errorbar(aes(ymin=mean-sd, ymax=mean+sd), size = 0.1, width=.3,
                     position=position_dodge(1)) +
       geom_line(data=DI.Equi.sum, aes(x=day, y=mean/10000))  +
       geom_ribbon(data = DI.Equi.sum, 
                   aes(x=day, y = mean/10000, ymin=mean/10000-sd/10000, ymax=mean/10000+sd/10000),
                   alpha=0.2, fill = "grey40") +
       theme(panel.grid.major =  element_blank(),
             panel.grid.minor = element_blank(),
             panel.background = element_blank(),
             axis.line = element_line(colour = "black"),
             axis.text.x = element_text(face = "bold", size = 7),
             axis.title.y = element_text(face = "bold", size = 10),
             legend.direction = "vertical", legend.box = "horizontal") +
       scale_size(range = c(5, 15)) +
       scale_x_continuous(breaks = c(1, 3, 5, 7, 9), limits = c(0,10))  +
       scale_y_continuous(limits=c(0, 0.0020), sec.axis = sec_axis(~ . * 10000), name = "pi")