Próbuję wykresować liczbę razy w mojej grupie bazy danych w mojej grupie bazy danych, reprezentują łańcuch z różnymi kolorami i narysuj linię, która podłącza osi X (Y = 0) do maksymalnego punktu przy każdej cenie (wartość x ) z kolorem łańcucha. Jeśli dwa różne łańcuchy mają taką samą cenę, chcę, aby linie pokryły się. To są moje dane: Dane

Na przykład: Cena 39.5 pojawia się dwa razy w łańcuchu B i jeden do łańcucha a.

Chcę wykresu z punktami i liniami. Każdy punkt musi być liczbą razy, jaką pojawia się w każdym łańcuchu w kolorze łańcucha. Do tego punktu mogę go wykres, otrzymuję ten wykres:

Wykres1.

Problem pojawia się, gdy próbuję podłączyć punkty za pomocą osi X, wypróbuję Geom_Seunkt, ale daje mi dziwny wykres z przekątnymi liniami, gdy ta sama cena pojawia się w więcej niż jednym łańcuchu, w ten sposób:

Wykres2.

To jest mój kod:

gP1 <- ggplot(fP1, aes(Price, N, color=Chain), group=Price) +
    geom_point() +
    geom_segment(aes(xend=N, color=Chain, group=Price), yend=0)

Każda pomoc byłaby doceniona, chcę uzyskać taki wykres:

Graph3.

Z góry dziękuję!

0
iae 14 październik 2020, 23:13

1 odpowiedź

Najlepsza odpowiedź

Wypróbuj to podejście za pomocą geom_segment() Definiowanie odpowiednich wartości dla pozycji X i Y. Tutaj kod:

library(ggplot2)
#Data
fP1 <- data.frame(Price=c(39.5,39.5,39.9,39.9,40,42.5,42.8,45,46,47.9,50),
                 Chain=c('a','b','h','c','d','e','f','f','e','f','g'),
                 N=c(1,2,1,4,1,1,1,1,2,1,3))
#Plot
ggplot(fP1, aes(Price, N, color=Chain, group=Price)) +
  geom_point() +
  geom_segment( aes(x=Price, xend=Price, y=0, yend=N))+
  theme_bw()

Wynik:

enter image description here

Poprzedni szkic uważa wszystkie ustawienie dla geom_segment(). Może to uprościć do tego (wielkie dzięki i wszystkie kredyty do @ruibarradas ):

#Plot 2
ggplot(fP1, aes(Price, N, color=Chain, group=Price)) +
  geom_point() +
  geom_segment( aes(xend=Price,yend=0))+
  theme_bw()

To da taki sam wynik.

2
Duck 14 październik 2020, 21:08