Set minimum limit for ggplot violin plot

I would like to set the minimum borders for the violin plot, similar to this question: set only the lower limit limit for ggplot

For this:

p <- ggplot(somedf, aes(factor(user1), pq)) + aes(ymin = -50) p + geom_violin(aes(fill = user1))+ aes(ymin=-50) 

I tried adding

 + expand_limits(y=-50) 

and

 + aes(ymin = -50) 

to set the lower bounds without effect.

Here's a sample of data that leads to the same problem:

 structure(list(pq = c(-20L, -12L, 10L, -13L, 11L, -16L), time = c(1214.1333, 1214.1833, 1214.2667, 1214.2833, 1214.35, 1214.5167), pq.1 = c(-20L, -12L, 10L, -13L, 11L, -16L), time.1 = c(1214.1333, 1214.1833, 1214.2667, 1214.2833, 1214.35, 1214.5167), time.2 = c(1214.1333, 1214.1833, 1214.2667, 1214.2833, 1214.35, 1214.5167), pq.2 = c(-20L, -12L, 10L, -13L, 11L, -16L), user1 = structure(c(1L, 1L, 2L, 1L, 2L, 1L), .Label = c("someguy3", "someguy4", "someguy6", "someguy4", "someguy5", "someguy6"), class = "factor"), pq.3 = c(-20L, -12L, 10L, -13L, 11L, -16L), time.3 = c(1214.1333, 1214.1833, 1214.2667, 1214.2833, 1214.35, 1214.5167), user1.1 = structure(c(1L, 1L, 2L, 1L, 2L, 1L), .Label = c("someguy3", "someguy4", "someguy6", "someguy4", "someguy5", "someguy6"), class = "factor")), .Names = c("pq", "time", "pq.1", "time.1", "time.2", "pq.2", "user1", "pq.3", "time.3", "user1.1"), row.names = c(565L, 566L, 568L, 569L, 570L, 574L), class = "data.frame") 
+4
source share
1 answer

ggplot will pay attention to the aes() directive if you add a call to geom_blank() .

 ## A reproducible example library(ggplot2) p <- ggplot(mtcars, aes(factor(cyl), mpg)) ## This doesn't work: p + aes(ymin = -10) + geom_violin() ## But this does: p + aes(ymin = -10) + geom_violin() + geom_blank() 

(Note: for this example, at least expand_limits(y = -10) works with or without an accompanying call to geom_blank() .)

enter image description here

+2
source

Source: https://habr.com/ru/post/1442533/


All Articles