Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ggplot2 each group consists of only one observation

Tags:

I am trying to plot the graph using ggplot2

So I have the following dataframe:

   iter        se perf name 1    V1 0.6463573 12.8    e 2    V2 0.3265986 16.8    e 3    V3 0.2333333 19.1    e 4    V4 0.1000000 19.9    e 5    V5 0.0000000 20.0    e 6    V1 0.7483315 12.6    f 7    V2 0.6333333 16.3    f 8    V3 0.6798693 18.8    f 9    V4 0.2236068 19.5    f 10   V5 0.1000000 19.9    f 

and I am trying to plot it in the format similar to this page (under Line graphs).

So here is the code for plotting:

pd <- position_dodge(.1) ggplot(df, aes(x=iter, y=perf, colour=name)) +    geom_errorbar(aes(ymin=perf-se, ymax=perf+se), width=.1, position=pd) +   geom_line(position=pd) +   geom_point(position=pd)+   ylim(0, 20) 

and it is working nicely: enter image description here, except that I want these dots to be connected. I tried to add group=1 or group=name to this part aes(x=iter, y=perf, colour=name) but it did not help.

I also get these warnings:

ymax not defined: adjusting position using y instead ymax not defined: adjusting position using y instead geom_path: Each group consist of only one observation. Do you need to adjust the group aesthetic? 

After looking in the internet, I found that the first two are due to position_dodge, but I think it is because of the ggplot, the third one is actually because of my disconnected points.

Any ideas how to connect them?

like image 1000
Salvador Dali Avatar asked May 27 '13 15:05

Salvador Dali


People also ask

WHAT IS group in Ggplot?

Default grouping in ggplot2If x or y are categorical variables, the rows with the same level form a group. Users often overlook this type of default grouping. If aesthetic mapping, such as color , shape , and fill , map to categorical variables, they subset the data into groups.

What is Geom_line in Ggplot?

geom_line() connects them in order of the variable on the x axis. geom_step() creates a stairstep plot, highlighting exactly when changes occur. The group aesthetic determines which cases are connected together.

What is group aesthetic?

The group aesthetic controls which rows of the data get grouped together for geom like geom_line() and geom_smooth() which use multiple rows to create one “thing” on the plot. When using geom_line() and color is discrete, group is automatically set to match it, so you get, for example, one line of each color.

How do I change the thickness of a line in ggplot2?

To change line width, just add argument size=2 to geom_line().


2 Answers

You need to adjust the group aesthetic, replace :

   geom_line(position=pd)  

by

  geom_line(position=pd,aes(group=name)) 

enter image description here

like image 91
agstudy Avatar answered Sep 18 '22 03:09

agstudy


check whether the data type is factor by using is.factor(x), if it is TRUE, then use as.integer function.

like image 34
Kirubaharan J Avatar answered Sep 22 '22 03:09

Kirubaharan J