2015-04-27 5 views
2

Я пытаюсь повторить концепцию диаграммы рис 1 из следующей бумаги (http://dx.doi.org/10.1016/j.envsci.2011.08.004):гистограммы с различной бункером шириной

enter image description here

Это представляет собой гистограмма, чей бен ширину варьироваться в зависимости от значения x и высота которого зависит от переменной y. Точные значения на графике не представляют особой озабоченности - скорее, понимая, как воспроизводить ее.

Следующий код создает фрейм данных с двумя характеристиками (abatement и cost) для каждого measure. ширина measure является загрязнением, а высота measure стоит. measure следует заказывать от наименьшей стоимости до наивысшей стоимости.

measure <- c(LETTERS) 
abatement <- c(sample(1:100, 26)) 
cost <- c(sample(-100:250, 26)) 
data <- data.frame(cbind(measure, abatement, cost)) 
+0

Вот ТАК вопрос о как сделать ящики имеют переменную ширину. Возможно, это помогает: http://stackoverflow.com/questions/12647774/is-there-an-equivalent-in-ggplot-to-the-varwidth-option-in-plot – lawyeR

ответ

3

Технически говоря, это barplot и не гистограмма (гистограммы конкретно относится к barplots, используемому для представления Binned частоты непрерывных переменных) ...

Вашего cbind() Мессинг вещи (преобразование abatement и cost к факторам):

data <- data.frame(measure, abatement, cost) 

Вот начало:

with(dplyr::arrange(data,cost), 
    barplot(width=abatement,height=cost,space=0)) 
+0

Отлично. Благодаря! –

0

Может быть, я не очень хорошо понимаю, что этот вопрос, но если вы ищете заказ кадра данных Я думаю, что это может быть хорошим решением:

data2 <- data[ order(cost), ] 

Или вы можете использовать dplyr пакет и его arrange функция.

+0

Как я читаю, OP хочет ширины бары варьируются в зависимости от уменьшения, а не для заказа баров. – lawyeR

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