2013-09-19 3 views
0

Я пытаюсь построить гистограмму с использованием ggplot2 с процентом по оси Y и числовыми значениями по оси x.Графическая гистограмма с процентами в ggplot2

Образец моих данных и сценариев выглядит так (ниже) и продолжается примерно для 100 000 строк (или более).

A B 
0.2 x 
1 y 
0.995 x 
0.5 x 
0.5 x 
0.2 y 

ggplot(data, aes(A, colour=B)) + geom_bar() +stat_bin(breaks=seq(0,1, by=0.05)) + scale_y_continuous(labels = percent)

Я хочу знать, какой процент значений В распределенном в каждом мусорном ведре значения, а не количество значений B в качестве значения.

Код, который теперь дает мне ось y с ymax как 15000. Предполагается, что ось Y находится в процентах (0-100).

ответ

2

Это то, что вы хотите? Я предполагаю, что ваши данные кадра называется ДФ:

# calculate proportions of B for each level of A 
df2 <- as.data.frame(with(df, prop.table(table(A, B)))) 
df2 
#  A B  Freq 
# 1 0.2 x 0.1666667 
# 2 0.5 x 0.3333333 
# 3 0.995 x 0.1666667 
# 4  1 x 0.0000000 
# 5 0.2 y 0.1666667 
# 6 0.5 y 0.0000000 
# 7 0.995 y 0.0000000 
# 8  1 y 0.1666667 

ggplot(data = df2, aes(x = A, y = Freq, fill = B)) + 
geom_bar(stat = "identity", position = position_dodge()) 

enter image description here

+0

Да! Однако, когда я пытаюсь добавить частотный столбец с использованием первой строки, мои данные сокращаются, а некоторые значения B отсутствуют. – Mengll

+0

@Mengll, извините, но я не совсем понимаю, что вы имеете в виду. Таблица частот, которая преобразуется в кадр данных, является агрегированной версией исходного фрейма данных, поэтому да, ваши данные будут «сокращены». Скажем, у вас 500 строк y = 0,5. Они будут сжиматься до одной строки процента от y в «bin» 0.5. – Henrik

+0

Я этого не понимал, но теперь это имеет смысл. Мой итоговый сюжет выглядит странно, но, вероятно, из-за моего собственного набора данных. Спасибо! – Mengll

Смежные вопросы