Funktionen plotten

Wie erweitere ich R um eigene Funktionen oder Pakete? Welches Paket ist passend für meine Fragestellung?

Moderatoren: EDi, jogo

Lagrange
Beiträge: 14
Registriert: Di Dez 01, 2020 7:21 pm

Funktionen plotten

Beitrag von Lagrange »

Hallo zusammen,

ich möchte diese zwei Funktionen plotten. Wenn ich das mache, sind die Achsenbezeichnung überlagert. Könnte mir bitte jemand helfen, wie man diese Funktionen am besten plotten kann? Vielen Dank.

Code: Alles auswählen

Q=10
C=15

fun1 <- function(S) A=(Q^2)/S
S=c(0,1,2,3,4,5,6,7,8,9,10,11,12)
fun2 <- function(S) B=(C/1)-(2*S)


plot (fun1(S), type="l", col="blue")
par(new=TRUE)
plot (fun2(S), type="l", col="red")
Zuletzt geändert von Lagrange am Do Dez 10, 2020 10:19 pm, insgesamt 1-mal geändert.
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Funktionen plotten

Beitrag von EDi »

Vielleicht reicht dir schon ?lines um die zweite Funktion als Linie in einen existierenden Plot zu zeichnen...
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
Lagrange
Beiträge: 14
Registriert: Di Dez 01, 2020 7:21 pm

Re: Funktionen plotten

Beitrag von Lagrange »

EDi hat geschrieben: Do Dez 10, 2020 10:19 pm Vielleicht reicht dir schon ?lines um die zweite Funktion als Linie in einen existierenden Plot zu zeichnen...
Danke für den Hinweis! Hatte hier mehrere Möglichkeiten entdeckt:
https://stackoverflow.com/questions/256 ... -plot-in-r
Q=10
C=15

fun1 <- function(S) A=(Q^2)/S
S=c(0,1,2,3,4,5,6,7,8,9,10,11,12)
fun2 <- function(S) B=(C/1)-(2*S)

plot (fun1(S), type="l", col="blue", ylim=c(0,30))
lines (fun2(S), type="l", col="red")
Ist es möglich die Funktionen auf den Graphen anzeigen zu lassen?
bigben
Beiträge: 2781
Registriert: Mi Okt 12, 2016 9:09 am

Re: Funktionen plotten

Beitrag von bigben »

Meinst Du so?

Code: Alles auswählen

Q=10
C=15

fun1 <- function(S) (Q^2)/S
S=seq(0,12,.1)
fun2 <- function(S) (C/1)-(2*S)

plot(S, fun1(S), type="l", col="blue", ylim=c(0,30) ,ylab = "A bzw B")
lines(S, fun2(S), type="l", col="red")

text(4, 20, "blau", col = "blue")
text(6, 20, expression(A==frac(Q^2, S)), col = "blue")
text(4, 5, "rot", col = "red")
text(4, 10, expression(B==C-2*S), col = "red")
Beachte: Ich habe ein paar kleine Änderungen im Zeichen-Code vorgenommen. Jetzt stimmen auch die x-Werte in der Grafik.

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Lagrange
Beiträge: 14
Registriert: Di Dez 01, 2020 7:21 pm

Re: Funktionen plotten

Beitrag von Lagrange »

Das ist schon mal sehr gut aus. Genau so etwas stellte ich mir vor. Allerdings ist die Schrift sehr groß. Dachte, man könnte es so machen, dass die Schrift entlang (auf) der linearen Funktion liegt. Man müsste den Text ein wenig drehen und ihn kleiner machen.
bigben
Beiträge: 2781
Registriert: Mi Okt 12, 2016 9:09 am

Re: Funktionen plotten

Beitrag von bigben »

Lagrange hat geschrieben: Do Dez 10, 2020 10:55 pm Man müsste den Text ein wenig drehen und ihn kleiner machen.
Um wieviel man den Text drehen und kleiner machen muss hängt sehr davon ab, mit welchem Seitenverhältnis und in welcher Größe Du die Grafik anzeigen lässt. Grundsätzlich geht das mit cex und srt:

Code: Alles auswählen

text(8, 12, "blau blau blau", col = "blue", cex=.7, srt = -20)
text(5, 4, "rot rot rot", col = "red", cex = 1.2, srt = -27)
 
Lg,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Lagrange
Beiträge: 14
Registriert: Di Dez 01, 2020 7:21 pm

Re: Funktionen plotten

Beitrag von Lagrange »

Hallo Bernhard,

ich habe es fast geschafft, dass es "perfekt" für mich ausschaut, vor allem mit Deiner Hilfe! Vielen Dank dafür.

Code: Alles auswählen

text(70, 20, "red", col = "blue")
text(95, 20, expression(A==frac(Q^2, S)), col = "blue")
text(16, 16, "red", col = "red")
text(55, 10, expression(A==frac(C,pS)-frac(pA,pS)*S), col = "red")
Wie schaffe ich es nun das S als Subskript hinzubekommen? Also das S von p_S und natürlich das A von p_A.
bigben
Beiträge: 2781
Registriert: Mi Okt 12, 2016 9:09 am

Re: Funktionen plotten

Beitrag von bigben »

Lese

Code: Alles auswählen

help(plotmath)
und suche dort nach dem Wort "subscript".

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Lagrange
Beiträge: 14
Registriert: Di Dez 01, 2020 7:21 pm

Re: Funktionen plotten

Beitrag von Lagrange »

Super! Ich habe es gefunden!

Nun habe ich noch eine letzte Frage, dann bin ich zufrieden und ich habe heute eine Menge gelernt.

Kann es sein, dass ich einen Fehler gemacht habe, was das Plotten der Funktionen angeht?

Wenn ich für S einen Wert auswähle, z.B. 10, dann muss A=10 sein (die blaue Linie), da A=Q^2/S=100/10=10. Dies kann ich aus der Graphik aber nicht ablesen. Liegt bei mir ein Denkfehler? Stehe ich irgendwie auf dem Schlauch? Lassen sich die Achsen vielleicht derart anpassen, dass sie beide Funktionen besser darstellen?
bigben
Beiträge: 2781
Registriert: Mi Okt 12, 2016 9:09 am

Re: Funktionen plotten

Beitrag von bigben »

Habe gerade noch keinen Rechner an. Dein Plot-Code und meiner unterscheiden sich. Tritt das mit meinem Code von gestern 22:50 Uhr auch auf?

LG,
Bernhard


Edit: Ja, so wie ich es oben gemacht hatte stimmt es mit dem Punkt (10; 10):

Code: Alles auswählen

Q <- 10
C <- 15
S <- seq(0,12,.1)
A <- function(S) (Q^2)/S
B <- function(S) (C/1)-(2*S)

plot(S, A(S), type="l", col="blue", ylim=c(0,30) ,ylab = "A bzw B")
abline(h = 10, col = "grey", lty=2)
abline(v = 10, col = "grey", lty=2)
lines(S, B(S), col="red")

text(6, 20, expression(A(S)==frac(Q^2, S)), col = "blue")
text(2, 6, expression(B(S)==C-2%.%S), col = "red")
Du hattest keine x-Koordinaten angegeben und dann geht R davon aus, dass es bei 1 zu zählen anfängt -- Deine Daten gingen aber bei Null los.
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Antworten