2014-09-29 14 views
39

Jakie są alternatywy dla rysując prostą krzywą dla funkcji takich jakJak wykreślić krzywą funkcji w R

eq = function(x){x*x} 

w R?

Brzmi to tak oczywiste pytanie, ale mogłem tylko znaleźć te inne pytania na StackOverflow, ale wszystkie one są bardziej specyficzne

Mam nadzieję, że nie napisałem duplikatu pytania.

Odpowiedz

5

Masz na myśli?

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

Plot of eq over range 1:1000

(albo cokolwiek zakres wartości jest odpowiednie dla danej funkcji)

20

plot ma metodę plot.function

plot(eq, 1, 1000) 

Albo

curve(eq, 1, 1000) 
+1

ciekawe, nie zobacz twój przykład 'plot (eq, 1, 1000)' nigdzie indziej. Widziałem również przykład 'curve (eq, 1, 100)'. Czy istnieje różnica? – sjdh

+3

@sjdh Niewiele. Funkcja 'działka.funkcji' faktycznie wywołuje 'krzywą' po przeprowadzeniu sprawdzania argumentów. Również 'curve' może przyjmować wyrażenie jako wejście, ale' plot' potrzebuje funkcji jako wejścia do wysyłki do 'działki.funkcji' – GSee

41

Zrobiłem kilka poszukiwania w internecie, i to kilka sposobów, które znalazłem:

Najprostszym sposobem jest użycie krzywej bez predefiniowanych funkcji

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

enter image description here

Można również użyć krzywej gdy jest masz predfined funkcja

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

enter image description here

Jeśli chcesz użyć ggplot, masz tu wybrać między qplot

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

enter image description here

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") 

enter image description here

1

Oto wersja kraty:

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

Lattice output

1

Krata rozwiązanie z dodatkowymi ustawieniami które potrzebne:

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 zakres wartości dla X wykreślono w różnych odstępach od 1, np 0.00001 można użyć:

X < -seq (0,10,0.00001)

  1. Można zmienić kolor linii poprzez określenie wartości RGB:

col = RGB (czerwony = 255, zielony = 90 , niebieski = 0, maxColorValue = 255)

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

LWD = 2

  1. Można zmienić rozmiar etykiet poprzez ich skalowanie:

cex.lab = 3,5, CEX. oś = 3,5

Example plot

Powiązane problemy