NONMEM Users Network Archive

Hosted by Cognigen

Re: [NMusers] Re: How to add secondary Y-axis in RStudio?

From: Mark Tepeck <mark.tepeck_at_gmail.com>
Date: Mon, 18 Mar 2019 21:35:40 -0400

Questions for general-purpose programming language can be posted on the
specialized forum stack overflow. Novel questions are typically rewarded by
reputation rankings and medals, which are brilliant assets for reputable
programmers. It will also benefit a more broad community.

Mark Tepeck

On Mon, Mar 18, 2019 at 8:10 PM Singla, Sumeet K <sumeet-singla_at_uiowa.edu>
wrote:

> Thank you everyone! Really appreciate your help.
>
> Regards,
> Sumeet Singla
>
> Sent from my iPhone
>
> On Mar 18, 2019, at 5:21 PM, Ruiz, Ana (Clinical Pharmacology) <
> Ana.Ruiz_at_pfizer.com> wrote:
>
> Dear Sumeet,
>
>
>
> The code below is not mine but I have used it in the past:
>
> (https://gist.github.com/jslefche/e4c0e9f57f0af49fca87)
>
>
>
> #Function for double
> axis###########################################################
>
>
>
> ggplot_dual_axis = function(plot1, plot2, which.axis = "x") {
>
>
>
> # Update plot with transparent panel
>
> plot2 = plot2 + theme(panel.background = element_rect(fill = NA))
>
>
>
> grid.newpage()
>
>
>
> # Increase right margin if which.axis == "y"
>
> if(which.axis == "y") plot1 = plot1 + theme(plot.margin = unit(=
c(0.7,
> 1.5, 0.4, 0.4), "cm"))
>
>
>
> # Extract gtable
>
> g1 = ggplot_gtable(ggplot_build(plot1))
>
>
>
> g2 = ggplot_gtable(ggplot_build(plot2))
>
>
>
> # Overlap the panel of the second plot on that of the first
>
> pp = c(subset(g1$layout, name == "panel", se = t:r))
>
>
>
> g = gtable_add_grob(g1, g2$grobs[[which(g2$layout$name=="panel")]=
],
> pp$t, pp$l, pp$b, pp$l)
>
>
>
> # Steal axis from second plot and modify
>
> axis.lab = ifelse(which.axis == "x", "axis-b", "axis-l")
>
>
>
> ia = which(g2$layout$name == axis.lab)
>
>
>
> ga = g2$grobs[[ia]]
>
>
>
> ax = ga$children[[2]]
>
>
>
> # Switch position of ticks and labels
>
> if(which.axis == "x") ax$heights = rev(ax$heights) else ax$widths=
 =
> rev(ax$widths)
>
>
>
> ax$grobs = rev(ax$grobs)
>
>
>
> if(which.axis == "x")
>
>
>
> ax$grobs[[2]]$y = ax$grobs[[2]]$y - unit(1, "npc") + unit(0.15, "cm=
")
> else
>
>
>
> ax$grobs[[1]]$x = ax$grobs[[1]]$x - unit(1, "npc") + unit(0.15, "=
cm")
>
>
>
> # Modify existing row to be tall enough for axis
>
> if(which.axis == "x") g$heights[[2]] = g$heights[g2$layout[ia,]$t=
]
>
>
>
> # Add new row or column for axis label
>
> if(which.axis == "x") {
>
>
>
> g = gtable_add_grob(g, ax, 2, 4, 2, 4)
>
>
>
> g = gtable_add_rows(g, g2$heights[1], 1)
>
>
>
> g = gtable_add_grob(g, g2$grob[[6]], 2, 4, 2, 4)
>
>
>
> } else {
>
>
>
> g = gtable_add_cols(g, g2$widths[g2$layout[ia, ]$l], length(g$width=
s)
> - 1)
>
>
>
> g = gtable_add_grob(g, ax, pp$t, length(g$widths) - 1, pp$b)
>
>
>
> g = gtable_add_grob(g, g2$grob[[7]], pp$t, length(g$widths), pp$b -=
 1)
>
>
>
> }
>
>
>
> # Draw it
>
> grid.draw(g)
>
>
>
> }
>
>
>
> ################################################################
>
>
>
> <image001.png>
>
> *Ana Ruiz, Pharm.D, Ph.D *
>
> Clinical Pharmacology, Sr. Director
>
> 10646 Science Center Dr., CB10, office 2439
>
> San Diego, CA 92121
>
> Office: 858 622 3143
>
> Cell: 858 336 1791
>
> Fax: 877 481 0722
>
>
>
> *From:* owner-nmusers_at_globomaxnm.com <owner-nmusers_at_globomaxnm.com> *On
> Behalf Of *Singla, Sumeet K
> *Sent:* Monday, March 18, 2019 2:54 PM
> *To:* nmusers_at_globomaxnm.com
> *Subject:* [EXTERNAL] [NMusers] How to add secondary Y-axis in RStudio?
>
>
>
> Everyone,
>
>
>
> I know this is not R discussion group but since many people here use
> RStudio for data plotting and visualization in conjunction with NONMEM, I
> thought I might get help here. Anyone knows how to add secondary Y-axis
> with its own “independent” scaling? Reason I said indepen=
dent is because
> right now I can add secondary Y-axis in *ggplot* but its scaling is
> dependent as a factor of primary Y-axis and I don’t want that. I =
am also
> using GraphPad which helps in independent scaling of secondary Y-axis but
> the process is too long. So, any options and help will be appreciated.
> Thank you!
>
>
>
> Regards,
>
> *Sumeet Singla*
>
> Graduate Student
>
> Dpt. of Pharmaceutics & Translational Therapeutics
>
> College of Pharmacy- University of Iowa
>
>
>
>


Received on Mon Mar 18 2019 - 21:35:40 EDT

The NONMEM Users Network is maintained by ICON plc. Requests to subscribe to the network should be sent to: nmusers-request@iconplc.com. Once subscribed, you may contribute to the discussion by emailing: nmusers@globomaxnm.com.