Jak wykreślić krzywą funkcji w R

Jakie są alternatywy dla rysowania prostej krzywej dla funkcji typu

eq = function(x){x*x}

W R?

Brzmi to tak oczywiste pytanie, ale mogłem znaleźć te powiązane pytania tylko na stackoverflow, ale wszystkie są bardziej szczegółowe

Mam nadzieję, że nie napisałem duplikatu.
Author: Community, 2014-09-29

5 answers

Masz na myśli tak?

> eq = function(x){x*x}
> plot(eq(1:1000), type='l')

Wykres eq w zakresie 1: 1000

(lub jakikolwiek zakres wartości jest istotny dla twojej funkcji)

 10
Author: Eric,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-29 01:24:45

Trochę szukałem w sieci i oto kilka sposobów, które znalazłem:

Najprostszym sposobem jest użycie krzywej bez predefiniowanej funkcji

curve(x^2, from=1, to=50, , xlab="x", ylab="y")

Tutaj wpisz opis obrazka

Możesz również użyć curve, gdy masz predefiniowaną funkcję

eq = function(x){x*x}
curve(eq, from=1, to=50, xlab="x", ylab="y")

Tutaj wpisz opis obrazka

Jeśli chcesz użyć ggplot, masz wybór pomiędzy qplot

library("ggplot2")
eq = function(x){x*x}
qplot(c(1,50), fun=eq, stat="function", geom="line", xlab="x", ylab="y")

Tutaj wpisz opis obrazka

I ggplot

library("ggplot2")
eq = function(x){x*x}
ggplot(data.frame(x=c(1, 50)), aes(x=x)) + stat_function(fun=eq, geom="line") + xlab("x") + ylab("y")

Tutaj wpisz opis obrazka

 50
Author: sjdh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-29 01:29:12

plot posiada metodę plot.function

plot(eq, 1, 1000)

Lub

curve(eq, 1, 1000)
 23
Author: GSee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-29 01:29:04

Oto wersja kratowa:

library(lattice)
eq<-function(x) {x*x}
X<-1:1000
xyplot(eq(X)~X,type="l")

Wyjście kratowe

 1
Author: John Paul,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-29 13:00:55

Rozwiązanie Kratowe z dodatkowymi ustawieniami, które potrzebowałem:

library(lattice)
distribution<-function(x) {2^(-x*2)}
X<-seq(0,10,0.00001)
xyplot(distribution(X)~X,type="l", col = rgb(red = 255, green = 90, blue = 0, maxColorValue = 255), cex.lab = 3.5, cex.axis = 3.5, lwd=2 )
  1. Jeśli potrzebujesz zakresu wartości dla x wykreślonego w krokach różnej od 1, np. 0.00001 możesz użyć:

X

  1. możesz zmienić kolor linii, definiując wartość rgb:

Col = rgb (red = 255, green = 90, blue = 0, maxColorValue = 255)

  1. można zmienić szerokość wykreślonej linii przez ustawienie:

Lwd = 2

  1. możesz zmienić rozmiar etykiet skalując je:

Cex.lab = 3,5, cex.oś = 3.5

Przykładowy wykres

 1
Author: mk18,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-05 09:14:19