[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:
DF2<-read.table(text="A B C
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
37 27 53",header=TRUE)
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",
add=TRUE,col="red")
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",
add=TRUE,col="red")
# 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
>> > 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