>> Hi Marc and Others,

I am still struggling to have my slab and ylab displayed on a bar plot. Marc 
did useful advise on playing with mar settings. I tried may combinations and 
can�t have it work.

I paste the code I am suing hoping guidance on solving this issue.




## extract works for all time steps
d1<-read.nc(gp)

d2<-read.nc(er)

d3<-read.nc(me)

d4<-read.nc(ne)

d5<-read.nc(ar)

d6<-read.nc(cc)

d7<-read.nc(mr)

d8<-read.nc(ic)

z1<-d1$spei
z2<-d2$spei
z3<-d3$spei
z4<-d4$spei
z5<-d5$spei
z6<-d6$spei
z7<-d7$spei
z8<-d8$spei
#par(oma=c(2,2,2,2))  # all sides have 3 lines of space  

par(mar=rep(2,4))
#par(mar=c(5.1, 4.1, 2.1, 2.1))
#par(mai=c(1.02,0.82,0.82,0.42))
op <- par(oma=c(1,2,3,5))
#op <- par(oma=c(6,5,0,0))
par(mfrow=c(4,2))

line = 3

barplot(z1, ylim=c(-2,2), xlab="Years", ylab="spei", xaxp=c(181,2005,1), 
col=ifelse(z1>0,"green","brown"))

mtext("a")
barplot(z2,xlab="Years", ylab="spei",  ylim=c(-2,2), 
col=ifelse(z2>0,"green","brown"))
mtext("b")
barplot(z3, ylim=c(-2,2), xlab="Years", ylab="spei", 
col=ifelse(z3>0,"green","brown"))
mtext("c")
barplot(z4, xlab="Years", ylab="spei", ylim=c(-2,2), 
col=ifelse(z4>0,"green","brown"))
mtext("d")
barplot(z5, xlab="Years", ylab="spei", ylim=c(-2,2), 
col=ifelse(z5>0,"green","brown"))
mtext("e")
barplot(z6, xlab="Years", ylab="spei", ylim=c(-2,2), 
col=ifelse(z6>0,"green","brown"))
mtext("f")
barplot(z7,xlab="Years", ylab="spei",  ylim=c(-2,2), 
col=ifelse(z7>0,"green","brown"))
mtext("g")
barplot(z8,  ylim=c(-2,2), xlab="Years", ylab="spei", 
col=ifelse(z8>0,"green","brown"))
mtext("h")
par(op)

Another solution with ggplot2 or lattice also welcome.


Best regards,

asarr
>> 
>> 
>> On Wed, Jul 20, 2016 at 6:03 PM, Marc Schwartz <marc_schwa...@me.com> wrote:
>> 
>> > On Jul 20, 2016, at 4:00 AM, Abdoulaye SARR <abdoulaye...@gmail.com> wrote:
>> >
>> > I have the color of my bar plot displayed correctly but don�t have xlab,  
>> > ylab  and xaxp don�t show up.
>> >
>> > here is example of yearly data (25 years 1981-2005)
>> >> head(z1)
>> > [1] -0.1001726  0.2014272 -0.8556950  0.1920669 -0.8013520  1.3324949
>> >
>> > code to display values
>> >
>> > par(mar=rep(2,4))
>> > op <- par(oma=c(5,7,1,1))
>> > par(mfrow=c(4,2))
>> >
>> > line = 3
>> >
>> > barplot(z1, ylim=c(-2,2), xlab="Years", ylab="spei", xaxp=c(181,2005,1), 
>> > col=ifelse(z1>0,"green","brown �))
>> >
>> > hoe help on this issue
>> >
>> > Fipou
>> 
>> 
>> Hi,
>> 
>> First, a general comment, which is that barplots are typically good for 
>> displaying counts and percentages, not continuous data points or perhaps 
>> estimates of means, etc. Your values for z1 above, suggest that you might be 
>> better off just plotting the points on the y axis against the years on the x 
>> axis. That is, for example:
>> 
>>   plot(1981:2005, z1, col = ifelse(z1 > 0, "green", "brown"),
>>        ylab = "spei", xlab = "Years", pch = 19)
>> 
>> presuming that z1 has 25 values.
>> 
>> That being said, some additional notes to hopefully guide you here with 
>> barplot():
>> 
>> 1. You appear to be wanting to plot a matrix of 8 plots in a 4 row by 2 
>> column matrix. That is fine, but note that changing the graphic parameters 
>> associated with the spacing of margins, etc. in a matrix don't always 
>> provide a result similar to what you might find in a single plot. I would 
>> start by not adjusting par(mar) and par(oma) from their default values to 
>> get an idea of what the plot looks like with default settings and then 
>> modify from there so that you can see how any adjustments affect the result. 
>> You may be adjusting the margins for each plot and the outer margins of the 
>> overall matrix in a manner that conflicts.
>> 
>> 
>> 2. In the case of a vertical barplot, the bars are not centered around 
>> integer values on the x axis, as they would be in say a boxplot. In the help 
>> for barplot() you will note that the Value section indicates that barplot 
>> returns a vector (by default) of the bar midpoints, which can then be used 
>> for annotation on the relevant axis. There are examples of the use of this 
>> on the barplot help page. Your values for 'xaxp' (which presumably has a 
>> typo for 1981, as 181) will not be correct here. Thus:
>> 
>>   MP <- barplot(z1, ...)
>> 
>> where 'MP' will contain the individual bar midpoints and then you can use 
>> code like:
>> 
>>   axis(1, at = MP, labels = 1981:2005, ...)
>> 
>> to place annotations below each bar. See ?axis as well as ?mtext for 
>> additional information on plot annotations.
>> 
>> Another option is to use the names.arg argument in barplot, to provide the 
>> names for each bar:
>> 
>>   barplot(z1, names.arg = 1981:2005, ...)
>> 
>> You will also likely have to adjust the font sizes for text spacing, as the 
>> defaults may be too large for all labels to display given the large number 
>> of bars. The cex* family of graphic parameters can be helpful. See the 
>> arguments in ?barplot and in ?par for more information.
>> 
>> Regards,
>> 
>> Marc Schwartz
>> 
>> 
>> <sample_code_sar.R><sample_bar_sar.pdf>
> 


        [[alternative HTML version deleted]]

______________________________________________
R-help@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.

Reply via email to