# [R] about plotting a special case

Jim Lemon drjimlemon at gmail.com
Thu Jul 13 06:02:24 CEST 2017

```values A and B have different ranges. Therefore you would want
horizontal error bars for the B mean. The dispersion function doesn't
do horizontal error bars, so you can use plotCI also in plotrix. Here
is an example with two databases:

62 22 54
69 24 55
51 28 56
47 25 53
70 21 52
61 23 50
40 19 51
58 18 57
38 24 58
plot(DF1\$A,DF1\$B,xlim=range(c(DF1\$A,DF2\$A)),
ylim=range(c(DF1\$B,DF2\$B)),pch=19,col="red")
meanA<-mean(DF1\$A)
meanB<-mean(DF1\$B)
points(meanA,meanB,pch=18,col="red")
q1090<-quantile(DF1\$B,probs=c(0.1,0.9))
plotCI(meanA,meanB,ui=q1090[2],li=q1090[1],err="x",
points(DF2\$A,DF2\$B,pch=19,col="green")
meanA<-mean(DF2\$A)
meanB<-mean(DF2\$B)
points(meanA,meanB,pch=18,col="green")
q1090<-quantile(DF2\$B,probs=c(0.1,0.9))
plotCI(meanA,meanB,ui=q1090[2],li=q1090[1],err="x",
# click at the upper left corner of the legend
legend(locator(1),legend=c("DF1","DF2"),pch=19,
col=c("red","green"))

Jim

On Thu, Jul 13, 2017 at 1:32 PM, lily li <chocold12 at gmail.com> wrote:
> Thanks, Jim. The code works, but I don't understand why you use q1090 <-
> quantile(DF1\$B, probs=c()), rather than DF1\$A? Also, how to add a legend for
> both points DF1 and DF2?
>
> On Wed, Jul 12, 2017 at 8:25 PM, Jim Lemon <drjimlemon at gmail.com> wrote:
>>
>> Hi lily,
>> Here is the first plot:
>>
>> plot(DF1\$A,DF1\$B,pch=19,col="red")
>> meanA<-mean(DF1\$A)
>> meanB<-mean(DF1\$B)
>> points(meanA,meanB,pch=18,col="red")
>> q1090<-quantile(DF1\$B,probs=c(0.1,0.9))
>> library(plotrix)
>> dispersion(meanA,meanB,q1090[2],q1090[1],
>>  intervals=FALSE,col="red")
>>
>> The same code will work for a second data frame, except that you would
>> use "points" instead of "plot" and change the color. You may also have
>> to specify xlim and ylim in the first call to "plot" so that all
>> values are on the plot.
>>
>> Jim
>>
>>
>>
>> On Thu, Jul 13, 2017 at 11:46 AM, lily li <chocold12 at gmail.com> wrote:
>> > Hi R users,
>> >
>> > I have a question about plotting. There is the dataframe below, while
>> > each
>> > row represents a record. If I want to plot on a A-B plot, i.e., x-axis
>> > represents A, while y-axis represents B values. However, I want to plot
>> > the
>> > mean value from records 1-10 as one point, while the 10th and 90th
>> > percentiles represent the error bars, such as one point in the attached
>> > example. I don't know how to do this, and then add a legend.
>> > After the above step, if I have a dataframe DF2 with the same structure
>> > but
>> > different values than DF1, how to show the point on the same figure, but
>> > use different colors or symbols? Thanks for any advices.
>> >
>> > DF1
>> >
>> >         A  B  C
>> > 1     65 21 54
>> > 2     66 23 55
>> > 3     54 24 56
>> > 4     44 23 53
>> > 5     67 22 52
>> > 6     66 21 50
>> > 7     45 20 51
>> > 8     56 19 57
>> > 9     40 25 58
>> > 10   39 24 53
>> >
>> > ______________________________________________
>> > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>> > https://stat.ethz.ch/mailman/listinfo/r-help