R - ggplot - закругленная оконечность для geom_bar

Это простой пример того, как выглядит моя диаграмма:

x <- data.frame(aa=c(0.2,0.6,0.1), dd = c(1,2,3))
x <- melt(x, "dd")
y <- data.frame(bb=c(0.4,0.5), dd = c(1,2))
y <- melt(y, "dd")
z <- data.frame(cc=c(0.5,0.25,0.1,0.05), dd = c(1,2,3,4))
z <- melt(z, "dd")

x=rbind(x,y,z)

col=c("white","grey","blue","white","red","white","green","blue","green")
ggplot(x, aes(x = variable, y = value)) + geom_bar(stat = "identity", fill = col)

Мне интересно, есть ли способ иметь закругленные концы для моих столбцов, например, с помощью параметра lineend для строки (http://sape.inf.usi.ch/quick-reference/ggplot2/lineend)?


person R_SOF    schedule 24.04.2015    source источник
comment
Сомневаюсь, хотелось бы узнать, знает ли кто-нибудь решение этой проблемы.   -  person pogibas    schedule 24.04.2015
comment
В штриховом графике вам нужно сравнить высоту разных столбцов. Итак, край должен быть как можно более прямым. Эстетика - не единственное, что нужно учитывать. цель построения разная.   -  person Koundy    schedule 24.04.2015
comment
Зачем тебе это нужно? Вы пытаетесь сделать их похожими на 3D-трубы?   -  person zx8754    schedule 24.04.2015
comment
На самом деле это не важно. Мои столбики - это хромосомы, и обычно мозаики хромосом имеют закругленные конечности;)   -  person R_SOF    schedule 24.04.2015
comment
Используйте пакет ggbio, Ideogram функцию   -  person zx8754    schedule 24.04.2015
comment
Или вот отправная точка: ggplot(x, aes(x=variable, y=value)) + geom_path(size=10, lineend="round",col=col)   -  person zx8754    schedule 24.04.2015
comment
Спасибо zx8754! Это сработало!   -  person R_SOF    schedule 05.05.2015
comment
@JustinB, если вы догадались, как использовать geom_path() для закругления углов, не могли бы вы опубликовать ответ? Мне любопытно посмотреть, как это получилось.   -  person LJW    schedule 08.05.2015


Ответы (1)


Вот пример, где полосы имеют закругленные концы, используемый с geom_line (geom_path), служащий в качестве минимального примера.

df1 <- data.frame( x=c(1,1,2,2,3,3),
                   y=c(1,7,1,4,1,5),
                   chr=c("one","one","two","two","three","three") )

ggplot( df1, aes(x,y, col=chr) ) + geom_line( lineend="round", lwd=10 )

ggplot_geom_line

person Andre Wildberg    schedule 30.12.2020