[R] Need help with plotting the graph

PIKAL Petr petr.pikal at precheza.cz
Tue Oct 8 08:32:02 CEST 2013


Hi

Your data frame is a bit weird. I changed it to more standard structure

df<-as.data.frame(lapply(df, unlist))

You can concatenate labels to one character vector
x<-with(df, paste(disk, vmfs, vmdk, sep="-"))
Then you can use barplot, however labels are quite long to fit.

barplot(df$BW, names=x)

Package plotrix can deal with alternating labels for x axis, or you can use perpendicular labeling. See las from ?par

Regards
Petr


> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
> project.org] On Behalf Of Prasad Joshi
> Sent: Tuesday, October 08, 2013 2:24 AM
> To: dcarlson at tamu.edu
> Cc: r-help at r-project.org
> Subject: Re: [R] Need help with plotting the graph
> 
> On Tue, Oct 8, 2013 at 1:48 AM, David Carlson <dcarlson at tamu.edu>
> wrote:
> > First. You should update R to the latest version, 3.0.2.
> >
> Hello David,
> 
> Thanks a lot for your reply. I will update R.
> 
> >
> > Third. Use dput(df) and send the output to the mailing list. A data
> > frame usually consists of several vectors, not several lists. It
> might
> > be necessary to explain how you created or obtained df.
> >
> 
> The data is generated by reading the CSV files. The source code is as
> below ==============================================================
> get_iops <- function(x) {
>   good <- complete.cases(x$Read.IOps)
>   mean(x$Read.IOps[good])
> }
> 
> get_mbs <- function(x) {
>   good <- complete.cases(x$Read.MBps)
>   mean(x$Read.MBps[good])
> }
> 
> lappend <- function(lst, obj) {
>   lst[[length(lst)+1]] <- obj
>   return(lst)
> }
> 
> result <- list()
> 
> disk <- "naa.5000a7203007ed8f"
> vmfs3_eager = read.csv("VMFS3-Thick-Eager.csv") iops <-
> get_iops(vmfs3_eager) bw <- get_mbs(vmfs3_eager) x <- list(disk = disk,
> vmfs = 3, vmdk = "eager", IOPS = iops, BW = bw) result <-
> lappend(result, x)
> 
> # I read 6 such CSV files
> ...
> ...
> 
> df <- as.data.frame(do.call(rbind, result))
> ==============================================================
> 
> > dput(df)
> structure(list(disk = list("naa.5000a7203007ed8f",
> "naa.5000a7203007ed8f",
>     "naa.5000a7203007ed8f", "naa.5000a7203007ed8f",
> "naa.5000a720300895c4",
>     "naa.5000a720300895c4", "naa.5000a720300895c4",
> "naa.5000a720300895c4"),
>     vmfs = list(3, 3, 5, 5, 3, 3, 5, 5), vmdk = list("eager",
>         "lazy", "eager", "lazy", "eager", "lazy", "eager", "lazy"),
>     IOPS = list(16886.766301, 44623.145983, 16767.526886, 45891.547436,
>         16794.495655, 45289.670722, 16603.198764, 46092.4011),
>     BW = list(65.963931, 174.309164, 65.498152, 179.263857, 65.603499,
>         176.912776, 64.856245, 180.048442)), .Names = c("disk", "vmfs",
> "vmdk", "IOPS", "BW"), row.names = c(NA, -8L), class = "data.frame")
> 
> > df
>                   disk vmfs  vmdk     IOPS       BW
> 1 naa.5000a7203007ed8f    3 eager 16886.77 65.96393
> 2 naa.5000a7203007ed8f    3  lazy 44623.15 174.3092
> 3 naa.5000a7203007ed8f    5 eager 16767.53 65.49815
> 4 naa.5000a7203007ed8f    5  lazy 45891.55 179.2639
> 5 naa.5000a720300895c4    3 eager  16794.5  65.6035
> 6 naa.5000a720300895c4    3  lazy 45289.67 176.9128
> 7 naa.5000a720300895c4    5 eager  16603.2 64.85625
> 8 naa.5000a720300895c4    5  lazy  46092.4 180.0484
> 
> 
> I used lists since, I wanted to avoid the compulsory coercion that
> happens in vectors. I though using numbers for IOPS and BW would be
> better for plotting the graphs.
> 
> > Second. What commands have you tried and what error messages did you
> > receive?
> 
> I wanted to plot the graph of BW or IOPS against combination of
> disk+vmfs+vmdk. For example: if I take the first row from above df
> dataframe, I would like graph to contain BW 65 on Y axis and X axis
> caption would be "naa.5000a7203007ed8f-3-eager".
> 
> I tried to plot graph using hist, plot, boxplot -- however I could not
> find a way to specify multiple values for X axis.
> 
> I will look forward for your reply.
> 
> Thanks and Regards,
> Prasad
> 
> 
> > -------------------------------------
> > David L Carlson
> > Associate Professor of Anthropology
> > Texas A&M University
> > College Station, TX 77840-4352
> >
> > -----Original Message-----
> > From: r-help-bounces at r-project.org
> > [mailto:r-help-bounces at r-project.org] On Behalf Of Prasad Joshi
> > Sent: Monday, October 7, 2013 5:03 AM
> > To: r-help at r-project.org
> > Subject: [R] Need help with plotting the graph
> >
> > Hello All,
> >
> > The version of R I am using is as follows
> >> version
> >                _
> > platform       x86_64-pc-linux-gnu
> > arch           x86_64
> > os             linux-gnu
> > system         x86_64, linux-gnu
> > status
> > major          2
> > minor          14.1
> > year           2011
> > month          12
> > day            22
> > svn rev        57956
> > language       R
> > version.string R version 2.14.1 (2011-12-22)
> >
> >
> > I just few days back started using R for basic statistical analysis.
> I
> > want to plot the graph of following information
> >
> >
> >> df
> >                   disk vmfs  vmdk     IOPS       BW
> > 1 naa.5000a7203007ed8f    3 eager 16886.77 65.96393
> > 2 naa.5000a7203007ed8f    3  lazy 44623.15 174.3092
> > 3 naa.5000a7203007ed8f    5 eager 16767.53 65.49815
> > 4 naa.5000a7203007ed8f    5  lazy 45891.55 179.2639
> >
> >> str(df)
> > 'data.frame':    4 obs. of  5 variables:
> >  $ disk:List of 4
> >   ..$ : chr "naa.5000a7203007ed8f"
> >   ..$ : chr "naa.5000a7203007ed8f"
> >   ..$ : chr "naa.5000a7203007ed8f"
> >   ..$ : chr "naa.5000a7203007ed8f"
> >  $ vmfs:List of 4
> >   ..$ : num 3
> >   ..$ : num 3
> >   ..$ : num 5
> >   ..$ : num 5
> >  $ vmdk:List of 4
> >   ..$ : chr "eager"
> >   ..$ : chr "lazy"
> >   ..$ : chr "eager"
> >   ..$ : chr "lazy"
> >  $ IOPS:List of 4
> >   ..$ : num 16887
> >   ..$ : num 44623
> >   ..$ : num 16768
> >   ..$ : num 45892
> >  $ BW  :List of 4
> >   ..$ : num 66
> >   ..$ : num 174
> >   ..$ : num 65.5
> >   ..$ : num 179
> >
> > I would like Y axis to represent BW and X axis to represent disk,
> vmfs
> > and vmdk.
> >
> > All the examples in books or online have single X axis. I could not
> > find an example which does something similar to what I am trying. Can
> > anyone please give me some pointers?
> >
> > Thanks and Regards,
> > Prasad
> >
> > ______________________________________________
> > R-help at r-project.org mailing list
> > 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.
> >
> 
> ______________________________________________
> R-help at r-project.org mailing list
> 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.



More information about the R-help mailing list