Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Geom_text with two labels in ggplot graph

I'm struggling with an additional label that I would like to add to my ggplot graph.

Here is my data set:

Group                   Gaze direction  Counts   Duration
Expert Performers       game table      148      1262.122
Expert Performers       objects table   40       139.466
Expert Performers       other           94       371.191
Expert Performers       co-participant  166      387.228
Non-Performers          game table      223      1137.517
Non-Performers          objects table   111      369.26
Non-Performers          other           86       86.794
Non-Performers          co-participant  312      566.438

This is the code that I'm using:

ggplot(b, aes(x=Group, y=Gaze.direction))+
  geom_count(mapping=aes(color=Counts, size=Duration))+
  theme_bw()+
  theme(panel.grid.major = element_line(colour = "grey"))+scale_size(range = c(0, 8))+
  scale_colour_gradient(low = "black", high = "gray91")+
  scale_y_discrete(name ="Gaze direction") + 
  geom_text(aes(label=Counts,hjust=-1, vjust=-1))

Current plot:

The desired graph should contain the number of counts (it's already there) and also the duration in parenthesis (marked red in graph) for all data points.

Desired plot:

If there is someone, who has an idea how I can fix my code I would highly appreciate it.

like image 445
Jo-Achna Avatar asked Dec 11 '22 10:12

Jo-Achna


1 Answers

Please post Your data as dput() output!

You could try this:

library(ggplot2)
b <- data.frame(Group  = c("Expert Performers","Expert Performers","Expert Performers","Expert Performers","Non-Performers","Non-Performers","Non-Performers","Non-Performers"), 
                   Gaze.direction = c("game table","objects table","other","co-participant","game table","objects table","other","co-participant"), Counts = c(148,40,94,166,223,111,86,312), Duration =c(1262.122,139.466,371.191,387.228,1137.517,369.26,86.794,566.438))

ggplot(b, aes(x=Group, y=Gaze.direction))+
  geom_count(mapping=aes(color=Counts, size=Duration))+
  theme_bw()+
  theme(panel.grid.major = element_line(colour = "grey"))+scale_size(range = c(0, 8))+
  scale_colour_gradient(low = "black", high = "gray91")+
  scale_y_discrete(name ="Gaze direction") + 
  geom_text(aes(label=paste("(",Counts,",",Duration,")"),hjust=-1, vjust=-1))

I have used paste() function in geom_text(): label argument in which both of Your variable values (Counts & Duration) are implemented.

enter image description here

like image 138
Mal_a Avatar answered Dec 28 '22 23:12

Mal_a