Mam skrypt basha, który śledzi użycie pamięci w czasie, gdy uruchamiane jest polecenie. Tworzy żądane polecenie, a następnie zapisuje log z kolumną1 = "pamięć używana przez program (koncerty)", a kolumna 2 to czas, który upłynął do tej pory w ciągu kilku sekund. na przykładWykreślanie i zapisywanie wykresu R
31.282 1470
31.565 1480
31.848 1490
31.989 1500
32.273 1510
32.414 1520
32.697 1530
32.980 1540
33.122 1550
33.405 1560
6.511 1570
6.935 1580
7.502 1590
7.926 1600
8.351 1610
8.775 1620
9.059 1630
9.483 1640
9.908 1650
10.333 1660
Co chcę zrobić, to poczekać, aż proces się zakończy, a następnie użyć R, aby wykreślić wykres zużycia pamięci w czasie i zapisać go w bieżącym katalogu. Grałem około R i wiem dokładnie, co nakazuje muszę używać:
> heisenberg <- read.csv(file="4644.log",head=FALSE,sep=" ")
> plot(heisenberg$V2,heisenberg$V1,type="o",col="red",main="Memory Usage Over Time",xlab="Time (seconds)",ylab="Memory (gigabytes)")
> text(max(heisenberg$V2),max(heisenberg$V1),max(heisenberg$V1)) #Displays max value
Ale część siedzę na zapisuje wykres jako jpg lub png. Albo jak mogłem wykonać to polecenie w moim skrypcie basha. Czy koniecznie musiałbym mieć inny skrypt napisany w języku R i uruchomić go? Czy byłoby to możliwe, aby zrobić wszystko w jednym?
Edit
Oto kod dla mojego script.rpng("mem_usage_2965.png",height=800,width=800)
heisenberg <- read.csv(file="2965.log",head=FALSE,sep=" ")
plot(heisenberg$V2,heisenberg$V1,type="o",col="red",main="oases_k85",xlab="Time (seconds)",ylab="Memory (gigabytes)")
text(max(heisenberg),max(heisenberg),max(heisenberg))
dev.off()
Czy ktoś może pomóc, dlaczego tekst nie drukuje wartość maksymalną w podawanych PNG? Nazywam to skryptem typu bash, takim jak R CMD BATCH script.r script.out
Dlaczego nie obliczasz 'max()' z 'heisenberg $ V1' i' heisenberg $ V2'? w chwili, gdy obliczasz wartość, która jest największą wartością w ramce danych 'heisenberg' dla ** obu ** współrzędnych (x i y), więc nic dziwnego, że nie pojawia się na wykresie; to jest poza działką.Myślę, że chcesz: 'with (heisenberg, text (max (V2), max (V1), max (V1)))" przynajmniej to jest sugerowane przez oryginalny fragment kodu, który pokazałeś. Zdajesz sobie sprawę, że nowy kod nie pasuje do oryginału "tak"? –
Po dokładniejszym przyjrzeniu się, tak, teraz zdaję sobie sprawę z różnicy. To dlatego, że po prostu otworzyłem skrypt.r, że wynik skryptu basha, ale zapomniałem uciec z $. W ten sposób zostały zinterpretowane jako zmienne zerowe. Spróbuję z takim stwierdzeniem, jak powiedziałeś. Aby było jasne, chcę wyświetlić maksymalną wartość na wykresie za pomocą wyświetlacza tekstowego. –