From: Marc Schwartz <MSchwartz_at_mn.rr.com>

Date: Thu 16 Feb 2006 - 15:50:34 EST

R-help@stat.math.ethz.ch mailing list

https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Thu Feb 16 15:59:00 2006

Date: Thu 16 Feb 2006 - 15:50:34 EST

On Thu, 2006-02-16 at 09:20 +0530, Subhabrata wrote:

> Hello R-experts,

*>
**> I am facing a strange problem while creating a barplot. I have serise of
**> data of which the first
**> on is around 162589 while the remaining data are around 0-150. so when I am
**> ploting the barplot
**> with all the data I am getting a single line -> test1.jpg.
**>
**> But If I remove the 1st value i.e 162589 then I am getting a normal
**> barplot -> test2.jpg
**>
**> Can some one help me regarding this matter.
**>
**> Thank you for any help.
**>
**> Regards
**>
**> Subhabrata
*

You have a wide range for your data, so the smaller values are getting lost.

You can try to use a log scale on the y axis and then set the tick marks to reasonable values:

# Do the barplot, setting 'log = "y"' to use a log # scale. # Set the range of the y axis to nice values. Note of # course that you cannot have 0 since log10(0) = -Inf # Also set the y axis so that the tick marks are not # drawn here barplot(c(162589, 50, 100, 150), log = "y", ylim = c(1, 200000), yaxt = "n")

# Use axTicks to get 'nice' values for the tick marks # The 'y' axis is '2'

at <- axTicks(2)

# Now use axis() to set the tick mark values and use # 'las' to make the labels horizontal # Use sprintf() to force non "1e+XX" labels

axis(2, at = at, label = sprintf("%d", at), las = 2)

You can then add further annotation as you require.

If you would prefer nicer 10^x exponential notations where the exponent is superscripted for the y axis tick marks, you could use 'plotmath' and do something like this:

barplot(c(162589, 50, 100, 150), log = "y",

ylim = c(1, 200000), yaxt = "n")

at <- axTicks(2)

axis(2, at = at, labels = parse(text = paste("10 ^", log10(at))),

las = 2)

The final line uses parse() to create math expressions for the tick mark notations. The result of the paste() call is:

> paste("10 ^", log10(at))

[1] "10 ^ 0" "10 ^ 1" "10 ^ 2" "10 ^ 3" "10 ^ 4" "10 ^ 5"

These are then converted into expressions using parse() that can be drawn on the axis by plotmath.

See ?axis, ?axTicks, ?sprintf, ?plotmath, ?parse and ?paste for more information here.

**HTH,
**
Marc Schwartz

R-help@stat.math.ethz.ch mailing list

https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Thu Feb 16 15:59:00 2006

*
This archive was generated by hypermail 2.1.8
: Mon 20 Feb 2006 - 14:08:28 EST
*