Saya ingin menunjukkan hasil grafik untuk waktu, y_min, y_max menggunakan satu tata letak, menggambar dua baris (nilai min_value dan maks) dalam sumbu y dengan waktu (sumbu x) dan menggambar grafik pemisah min_value dan max_value di sumbu y. ## ...

0
mandarin 25 मार्च 2021, 00:26

2 जवाब

सबसे बढ़िया उत्तर

Anda memiliki dua cara yang dapat Anda lakukan - satu sederhana, yang lainnya rapi.

Cara sederhana adalah memiliki panggilan dua geom_line dan ubah aes(y= ) untuk masing-masing (pengaturan warna secara manual):

library(ggplot2)
library(tidyr)

df <- dplyr::tribble(~time, ~min_value,   ~max_value,
                      945,  0.892021996,    0.964050503,
                      955,  0.769454489,    0.884603426,
                      965,  0.774495876,    0.884901433,
                      975,  0.745542623,    0.897309432,
                      985,  0.753567721,    0.912993446)

ggplot(df, aes(x = time)) +
  geom_line(aes(y = min_value), colour = "red") +
  geom_line(aes(y = max_value), colour = "blue")

Cara yang rapi adalah dengan memandulkan tabel Anda untuk memiliki nama pengukuran sebagai variabel:


df %>% pivot_longer(-time) %>% 
  ggplot(aes(time, value, colour = name)) +
  geom_line() +
  scale_colour_manual(values = c("red","blue"))

Dibuat pada 2021-03-24 oleh the reprex paket (v1.0.0)

0
Andrew Baxter 24 मार्च 2021, 22:32

Satu kemungkinan solusi pangkalan akan, untuk menggambar pertama baris katakanlah min_value dan tambahkan max_value dengan menggunakan lines()

Jadi ini akan terlihat seperti:

plot(test.csv$time, test.csv$min_value, type = "l") 
lines(test.csv$time, test.csv$max_value)

Untuk versi ggplot Anda perlu mengkonversi data Anda ke format panjang:

test.csv <- melt(test.csv, id.vars = "time")
ggplot(test.csv, mapping = aes(x = variable, y = value, col = time)) +
geom_line()
0
evian_bottle 24 मार्च 2021, 22:30