[R] Change the position of label when using R package eulerr

Aimin Yan @|m|n@@t@work @end|ng |rom gm@||@com
Sat Sep 15 22:27:37 CEST 2018


Thank you, I tried your code, but I still got error:

  fit1 <- euler(c("ciLAD" = 785, "LAD" = 565, "nonXL_MEF" = 167,
                    "ciLAD&LAD" = 3, "ciLAD&nonXL_MEF" = 101,
"LAD&nonXL_MEF" = 541,
                    "ciLAD&LAD&nonXL_MEF" = 2),shape = "ellipse")

    fit1.plot <- plot(fit1,quantities = TRUE,fill = rainbow(7),lty =
1:2,labels = list(font = 1),alpha=0.7)
    fit1.plot
    grid.ls(fit1.plot)
    t <- grid.get("quantities.grob")
    names(t)
    t$label
    t$x
    t$y

    # Try to change the x and y value of the 4th label "2"
    grid.edit("quantities.grob",x[[4]]=unit(-11.8262244206465, "native"))
    grid.edit("quantities.grob",y[[4]]=unit(-5.19720701058398, "native"))

Error: unexpected '=' in "grid.edit("quantities.grob",x[[4]]="

Aimin

On Fri, Sep 14, 2018 at 6:47 PM David Winsemius <dwinsemius using comcast.net>
wrote:

>
> > On Sep 14, 2018, at 2:03 PM, Aimin Yan <aimin.at.work using gmail.com> wrote:
> >
> > Thank you,
> >
> > I figure out a way like this:
> >
> > fit1 <- euler(c("ciLAD" = 785, "LAD" = 565, "nonXL_MEF" = 167,
> >                     "ciLAD&LAD" = 3, "ciLAD&nonXL_MEF" = 101,
> "LAD&nonXL_MEF" = 541,
> >                     "ciLAD&LAD&nonXL_MEF" = 2),shape = "ellipse")
> >
> > plot(fit1,quantities = TRUE,fill = rainbow(7),lty = 1:2,labels =
> list(font = 1),alpha=0.7)
> >
> > grid.ls()
> > t <- grid.get("quantities.grob")
> > names(t)
> >
> > # Change these value will change the location of label.
> >
> > grid.edit("quantities.grob",x=unit.c(unit(-14.9884684724791, "native"),
> >                                          unit(-14.883684319653,
> "native"),
> >                                          unit(13.9805892820006,
> "native"),
> >                                          unit(-12.8808987356981,
> "native"),
> >                                          unit(-11.488226371243,
> "native"),
> >                                          unit(-9.51474016085318,
> "native"),
> >                                          unit(-1.00436055190216,
> "native")))
> >
> > grid.edit("quantities.grob",y=unit.c(unit(-8.07672595120493, "native"),
> >                                          unit(4.78718651828883,
> "native"),
> >                                          unit(0.25941593099694,
> "native"),
> >                                          unit(-4.32200781461293,
> "native"),
> >                                          unit(25.7349463488991,
> "native"),
> >                                          unit(-22.7610031110325,
> "native"),
> >                                          unit(14.5001560838519,
> "native")))
> >
> > However, here I just want to change the x and y  value of 4th label,
> does anyone know how to set it?
>
> If the t object were a complete grid object, it might have been:
>
> grid.edit("quantities.grob", x[[4]]= unit(-12.8808987356981, "native")
>            )
> grid.edit("quantities.grob", y[[4]]= unit(-4.32200781461293, "native"),
>            )
>
>
> But I don't think that will succeed since you never assigned the value of
> the plot operation to a name. Instead you pulled out part of the grid
> object that was sitting "free" and unassigned to a name. If you assign that
> value of plot(....) to `my.plot` you get:
>
>  grid.ls(my.plot)
> euler.diagram
>   GRID.gTree.11
>     diagram.grob.1
>       fills.grob.1
>       fills.grob.2
>       fills.grob.3
>       fills.grob.4
>       fills.grob.5
>       fills.grob.6
>       fills.grob.7
>       edges.grob
>       labels.grob
>       quantities.grob
>
> I think you need to work with the tutorials in the grid package.
>
> Look at:
>
> help("grid-package")
>
> --
> David.
>
> >
> > Aimin
> >
> > On Thu, Sep 13, 2018 at 9:56 PM David Winsemius <dwinsemius using comcast.net>
> wrote:
> >
> > > On Sep 13, 2018, at 2:31 PM, Aimin Yan <aimin.at.work using gmail.com>
> wrote:
> > >
> > > I am using eulerr to get venn.
> > > My code is like:
> > >
> > > fit1 <- euler(c("ciLAD" = 785, "LAD" = 565, "nonXL_MEF" = 167,
> > >                    "ciLAD&LAD" = 3, "ciLAD&nonXL_MEF" = 101,
> > > "LAD&nonXL_MEF" = 541,
> > >                    "ciLAD&LAD&nonXL_MEF" = 2),shape = "ellipse")
> > >
> > > plot(fit1,quantities = TRUE,fill = rainbow(7),lty = 1:2,labels =
> list(font
> > > = 1),alpha=0.7)
> > >
> > > After I get the figure, I find the position of some  labels need to be
> > > adjusted.
> > >
> > > Does anyone has some idea about how to process this?
> >
> > Looking at the code of plot.euler we see that the plotting paradigm is
> grid. So you could assign the output to a data.object name, search for list
> items that match the names of the labels you want to reposition, and modify
> the position values. You would need to be more specific, if you want a
> worked example.
> >
> > As far as I can see the lables and postions are fairly deep inside a
> list structure:
> >
> >  $ children     :List of 1
> >   ..$ GRID.gTree.12:List of 5
> >   .. ..$ children
> >          $ diagram.grob.1
> >             $children
> > .. .. .. .. ..$ labels.grob    :List of 11
> >   .. .. .. .. .. ..$ label        : chr [1:3] "ciLAD" "LAD" "nonXL_MEF"
> >   .. .. .. .. .. ..$ x            : 'unit' num [1:3] -18.1native
> 69.2native 11.9native
> >   .. .. .. .. .. .. ..- attr(*, "valid.unit")= int 4
> >   .. .. .. .. .. .. ..- attr(*, "unit")= chr "native"
> >   .. .. .. .. .. ..$ y            : 'unit' num [1:3] -17.86native
> 5.24native 27.86native
> >   .. .. .. .. .. .. ..- attr(*, "valid.unit")= int 4
> >   .. .. .. .. .. .. ..- attr(*, "unit")= chr "native"
> >
> > --
> > David.
> > >
> > >
> > > Thank you,
> > >
> > > Aimin
> > >
> > >       [[alternative HTML version deleted]]
> > >
> > > ______________________________________________
> > > R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> > > https://stat.ethz.ch/mailman/listinfo/r-help
> > > PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> > > and provide commented, minimal, self-contained, reproducible code.
> >
> > David Winsemius
> > Alameda, CA, USA
> >
> > 'Any technology distinguishable from magic is insufficiently advanced.'
>  -Gehm's Corollary to Clarke's Third Law
> >
> >
> >
> >
> >
>
> David Winsemius
> Alameda, CA, USA
>
> 'Any technology distinguishable from magic is insufficiently advanced.'
>  -Gehm's Corollary to Clarke's Third Law
>
>
>
>
>
>

	[[alternative HTML version deleted]]




More information about the R-help mailing list