У меня есть график бар ggplot с сгруппированными барами. Есть 4 бара за x значение, а заливка бара, цвет и альфа определяются переменными в данных. Я бы хотел, чтобы моя легенда точно отражала появление баров в сюжете. К сожалению, у меня нет достаточной репутации, чтобы отправить картину моего участка, но вот мой код:Как сделать легенду ggplot точно отражать внешний вид баров
ggplot(all_frame_freq, aes(x = Frame, y = prop_type, group = interaction(speaker,Type), fill = Type, color = Type, alpha = speaker)) +
geom_bar(position = "dodge", stat="identity") +
scale_fill_manual(values = c("#E41A1C","#377EB8"), name="Type", labels=c("A","B")) +
scale_color_manual(values = c("#E41A1C","#377EB8"), guide=FALSE) +
scale_alpha_manual(values = c(.2, 1), name="speaker", labels=c("1", "2"))
Это создает линию вокруг всех баров, но линия показывает только вокруг баров, где альфа < 1. Таким образом, сюжет проявляется как светлые полосы с контуром и темными полосками без контура. (Мне показалось, что это проще смотреть, чем просто светлые и темные полосы.) Я бы хотел, чтобы легенда отражала это, так что окно легенды для динамика 1 появляется с контуром, подобным соответствующим барам. Но в настоящее время легенда оратора просто показывает бледно-серый квадрат для 1 и темно-серого квадрата на 2, и я не могу понять, как добавить линию только в светло-серое поле. Есть ли вообще способ сделать это? Ближе всего я должен был добавить
theme(legend.key = element_rect(color = 'black', size = 0.5))
, но это добавляет линию вокруг всех полей легенды. Есть ли способ добавить его в одну коробку в альфа-легенде или (возможно, проще) только альфа-легенде, где я мог бы установить цвет линии в соответствии с более темным полем? Я много раз пробовал различные методы и много раз искал идеи и еще не нашел правильного решения.
Образец моих данных - отформатирован в этот раз:
structure(list(Type = structure(c(1L, 1L, 2L, 2L, 1L, 1L, 2L,
2L), .Label = c("A", "B"), class = "factor"), Frame = structure(c(1L,
2L, 1L, 2L, 1L, 2L, 1L, 2L), .Label = c("V CP", "V NP"), class = "factor"),
prop_type = c(0.209513024, 0.138731597, 0.017167382, 0.387528402,
0.437998087, 0.144086707, 0.042695836, 0.398376853), speaker = structure(c(1L,
1L, 2L, 2L, 1L, 1L, 2L, 2L), .Label = c("Speaker1", "Speaker2"
), class = "factor")), .Names = c("Type", "Frame", "prop_type",
"speaker"), class = "data.frame", row.names = c(NA, -8L))
Вы знаете, у нас нет данных all_frame_freq поэтому мы не можем воссоздать свою фотографию. Пожалуйста, покажите нам данные, набрав 'dput (all_frame_freq)' и вставив вывод в ваш вопрос – G5W
My bad - только что добавил. – Ed2122
Просьба представить воспроизводимый пример, «добавленные данные» не воспроизводятся. Для получения справки см. [Здесь] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example). –