Альтернативная позиция geom_text с помощью hjust
Я строю гистограмму и используюgeom_text
вставить значение каждого стека. Сложность, с которой я сталкиваюсь, заключается в том, что некоторые стеки очень маленькие / узкие, так что текст из двух стеков перекрывает друг друга и, следовательно, не очень удобочитаем. Я хотел бы настроить расположение текста таким образом, чтобы, например, положение текста чередовалось междуhjust == 1
а такжеhjust == -1
для каждого стека, чтобы не было перекрытий (или любого другого метода, который приведет к читаемому тексту).
Вот пример того, что я сейчас делаю (dput
изmydf
предоставляется ниже):
library(ggplot2)
ggplot(mydf, aes(x=variable, y = value, fill = Category)) +
geom_bar(stat="identity") +
geom_text(aes(label = value, y = pos-(value/2)), size = 3)
Что я пробовал до сих пор:
С помощьюposition = position_dodge(width = 0.5)
а такжеposition = position_jitter(h =0.5, w = 0.5)
но ни один из них не привел к тому, что я пытался сделать.
Моей первой мыслью было определитьhjust = c(1,-1)
надеясь, что он будет переработан и тексты будут чередоваться междуhjust == 1
а такжеhjust == -1
но это приводит к сообщению об ошибке:
Error: Incompatible lengths for set aesthetics: size, hjust
Я также попытался определитьsize = c(3,3,3,3,3,3,3,3,3), hjust = c(1,-1,1,-1,1,-1,1,-1,1)
но это приводит к тому же сообщению об ошибке.
Я был бы признателен за несколько советов о том, как добиться этого правильным способом (и я также открыт для других предложений).
Я не мог понять, почемуdput
не сработало (и у меня это не сработало), поэтому вот данные в удобочитаемом формате:
Category variable value pos maxpos
1 AX WW 47.8 47.8 184.1
2 AY WW 5.6 53.4 184.1
3 AZ WW 15.8 69.2 184.1
4 BX WW 31.4 100.6 184.1
5 BY WW 11.7 112.3 184.1
6 BZ WW 10.7 123.0 184.1
7 CX WW 2.2 125.2 184.1
8 CY WW 21.4 146.6 184.1
9 CZ WW 37.5 184.1 184.1
10 AX SM 39.8 39.8 148.6
11 AY SM 2.9 42.7 148.6
12 AZ SM 13.2 55.9 148.6
13 BX SM 22.7 78.6 148.6
14 BY SM 7.3 85.9 148.6
15 BZ SM 8.9 94.8 148.6
16 CX SM 1.6 96.4 148.6
17 CY SM 17.3 113.7 148.6
18 CZ SM 34.9 148.6 148.6
19 AX AsIs 156.9 156.9 519.0
20 AY AsIs 13.1 170.0 519.0
21 AZ AsIs 70.5 240.5 519.0
22 BX AsIs 72.6 313.1 519.0
23 BY AsIs 30.7 343.8 519.0
24 BZ AsIs 35.6 379.4 519.0
25 CX AsIs 5.2 384.6 519.0
26 CY AsIs 44.8 429.4 519.0
27 CZ AsIs 89.6 519.0 519.0