Jarek Statinowy

Jarek Statinowy Z zapałem do pracy

Temat: Wykres wielosłupkowy

Witam jak uzyskać taki efekt


Obrazek


Generalnie taki sam efekt chciałbym uzyskać

Próbowałem analogicznie jak w poście słupek w słupku ( przesunięciem) ale wychodzą głupoty

ee %>% ggplot(aes(x = dane, y = sr_wyd1)) + 
geom_bar(stat = "identity", fill = "lightblue") +
geom_bar(aes(x=klm+0.2,y = med_wyd1), width = 0.5, stat = "identity", fill = "orange")+
geom_bar(aes(x=klm+1,y = sr_wyd2), width = 0.2,stat = "identity", fill = "red")


jest może komenda typu hjust w odniesieniu do slupków (lub wykersu liniowego czy tez innego)

Jeśli chciałbym aby słupek był w środku ale nie centralnie tylko np. lewe krawędzie obu słupków były sklejone to używam hjust

tj próbowałem tak zrobić ale po wpisaniu
... width = 0.5,hjust=-2, stat = "identity", fill = "orange")

dostaje komunikat
Warning: Ignoring unknown parameters: hjust


z góry dziękiTen post został edytowany przez Autora dnia 04.07.17 o godzinie 08:39
Piotr Ocalewicz

Piotr Ocalewicz Statystyka, Analiza
Danych, Data Mining,
Raportowanie

Temat: Wykres wielosłupkowy

Według mnie do przedstawiania tego typu danych ten rodzaj wykresu nie jest najlepszym rozwiązaniem, z kilku powodów:
- chcesz porównywać wielkości słupków, natomiast użytkownik podświadomie porównuje też ich wielkości (pola)
- dobór kolorów - czemu czerwony razem z czarnym a zielony z żółtym? Jeśli już w ten sposób to lepiej zastosować różne odcienie jednego koloru dla tej samej kategorii
- jeśli badane zmienne będą raz rosnąć a raz maleć to słupki nałożą się na siebie i zrobi się nieczytelnie
W twoim przypadku spróbowałbym z "slope chart" (nie pamiętam polskiej nazwy)., tak jak poniżej:


Obrazek


Na osi x będą wtedy lata, na osi y kraje, a kolorami można odróżniać kategorie.
Jarek Statinowy

Jarek Statinowy Z zapałem do pracy

Temat: Wykres wielosłupkowy

Rozumiem wątpliwości dotyczące zasadności użycia danego typu wykresu, niemniej jednak właśnie takiego potrzebuję (kolory dostosuję :), co do szerokości słupków to chodzi o to, że to są podkategorie i taki układ jest zasadny do danych które mam.

Problem nadal pozostaje otwarty w jaki sposób skonstruować taki wykres. Czyli jak nanieść warstwy wartosci i do tego zrobić legendę.

DANE

dane <- data.frame(kraj=c(1L,2L,3L,4L,5L,6L),
rok=c(rep(2010,6),rep(2014,6)),
Kat1=c(c(1627,1144,1100,1085,983,639),c(1827,1444,1400,1285,1183,1039)),
Kat2=c(c(1500,1244,1168,1110,1002,863), c(1400,1144,1568,1510,999,800))
)
dane

dane$kraj <- factor(d$kraj, levels=1:6, labels=c("Polska", "Niemcy", "Austria", "Rosja", "Ukraina", "Francja"))

dane$rok <- factor(d$rok,levels=c(2010,2014))
Ten post został edytowany przez Autora dnia 06.07.17 o godzinie 11:07
Jarek Statinowy

Jarek Statinowy Z zapałem do pracy

Temat: Wykres wielosłupkowy

data <- data.frame(klm=c(1L,2L,3L),
year=c(rep(2000,3),rep(2016,3)),
Category1=c(c(1313,1057,981),c(1456,1200,1124)),
Category2=c(c(1661,1257,1301),c(1827,1444,1600)))


data$klm <- factor(data$klm, levels=1:3, labels=c("Belgium", "Netherlands","Germany"))

data$year <- factor(data$year,levels=c(2000,2016))

Średnia=
ggplot(data=data, aes(x=klm, y=Category2, fill=year)) +
geom_bar(stat="identity", position=position_dodge(),colour="black")+
scale_fill_manual(values = c("blue", "red"))+
geom_text(aes(y = Category2,label = format(Category2,big.mark = " ")),position = position_dodge(width = 1),vjust = -0.5, hjust = 0.5, cex = 3)


Średnia+
geom_bar(data=data, aes(x=klm, y=Category1, fill=year),stat="identity", width = 0.5,position=position_dodge(), colour="black")+
geom_text(aes(y = Category1,label = format(Category1,big.mark = " ")),position = position_dodge(width = 1),vjust = -0.5, hjust = 0.5, cex = 3)



Pomóżcie proszę zmienić kolory drugiej warstwy oraz zrobić legendę - wzór w posście 1

Następna dyskusja:

Wykres




Wyślij zaproszenie do