регулировка масштаба барплота и объединение данных типа в один столбец - PullRequest
0 голосов
/ 23 апреля 2020

Прежде всего ... Я сожалею о моем Enlgi sh .. Мне, вероятно, время от времени не хватает наиболее подходящего термина ...

В любом случае .. Я хочу сделать Barplot, с несколькими барами, отображаемыми друг под другом (поэтому переверните Barplot в сторону).

Данные, которые у меня есть, могут выглядеть примерно так:

t1 = c('name1','name1','name2','name2')
t2 = c(5,0,2,1)
t3 = c('a','b','a','b')
test = data.frame(cbind(t1, t2, t3))

В t1 мы имеем имена,

в t2 у нас есть значения,

в t3 у нас есть тип .. Вроде как надмножество. Он либо принадлежит типу a, либо типу b.

В идеале я хотел бы отобразить объект данных с тем же именем (t1), но разными типами (t3), в одной строке / строке или в непосредственно смежных барах. (Кажется, это работает)

Кроме того, работает различие цветов между этими двумя типами.

ggplot(test, aes(x = t1, y = t2, fill = t3)) +
    geom_bar(stat = 'identity', position = position_dodge()) +
    geom_text(aes(label=t2), color = 'white') + 
    scale_fill_brewer(palette = 'Paired') + 
    theme_minimal() +
    coord_flip()

Теперь мои вопросы / вопросы:

Что, к сожалению, не работает, так это масштаб барплота. На оси X вы видите значения 0,1,2,5, которые отображаются с равным расстоянием между ними. Но 5, очевидно, дальше от 2, чем 1 от 2.

Как я могу исправить проблему с масштабированием? До сих пор он не работал с установкой xmin oder xlim (,) или с y. Кроме того, факторизация значений не работала, как упорядочение или нет.

Также ... отображение чисел, которые я бы хотел прикрепить непосредственно к панели, выглядит очень странно. Число скрыто на пересечении двух полос.

Как я могу это исправить?

Большое спасибо за вашу помощь, и я искренне надеюсь, что мое объяснение имело некоторый смысл.

1 Ответ

1 голос
/ 23 апреля 2020

На самом деле, когда вы используете cbind, t2 становится фактором. Вы можете использовать cbind.data.frame функцию как

test = cbind.data.frame(t1, t2, t3)
str(test)

'data.frame':   4 obs. of  3 variables:
 $ t1: Factor w/ 2 levels "name1","name2": 1 1 2 2
 $ t2: num  5 0 2 1
 $ t3: Factor w/ 2 levels "a","b": 1 2 1 2

ggplot(test, aes(x = t1, y = t2, fill = t3)) +
  geom_col(position = position_dodge()) +
  geom_text(aes(label=t2), color = 'white') + 
  scale_fill_brewer(palette = 'Paired') + 
  theme_minimal() +
  coord_flip()

См. str ваших данных

t1 = c('name1','name1','name2','name2')
t2 = c(5,0,2,1)
t3 = c('a','b','a','b')
test = data.frame(cbind(t1, t2, t3))
str(test)

'data.frame':   4 obs. of  3 variables:
 $ t1: Factor w/ 2 levels "name1","name2": 1 1 2 2
 $ t2: Factor w/ 4 levels "0","1","2","5": 4 1 3 2
 $ t3: Factor w/ 2 levels "a","b": 1 2 1 2

Для geom_text позиционирования

ggplot(test, aes(x = t1, y = t2, fill = t3)) +
  geom_col(position = position_dodge()) +
  geom_text(aes(label=t2), color = 'black', 
            position = position_dodge(width = 1), hjust = -0.5) + 
  scale_fill_brewer(palette = 'Paired') + 
  theme_minimal() +
  coord_flip()

enter image description here

...