[gelöst] Problem mit dem Parameter xlas in der Funktion corPlot()

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

Moderatoren: EDi, jogo

Antworten
selbststaendiger
Beiträge: 5
Registriert: Mi Aug 30, 2023 3:56 pm

[gelöst] Problem mit dem Parameter xlas in der Funktion corPlot()

Beitrag von selbststaendiger »

Hallo ihr Lieben,

ich hab im Moment ein Problem mit der Erstellung einer Korrelationsmatrix, die ich mit der Funktion corPlot() erstelle. Ich möchte die Achsenbeschriftungen auf der x-Achse formatieren, sodass sie orthogonal zur x-Achse stehen.

Damit ihr eine Chance habt, es nachzuvollziehen, stelle ich hier ein vollständiges Minimalbeispiel dar.

Code: Alles auswählen

library(readxl)
data = read_xlsx("data.xlsx", sheet = "Korrelationen", na = "NA")
library(Hmisc)
library(tidyverse)
library(psych)
corPlot(rcorr(as.matrix((data %>% select('Daten 1', 'Daten 2', 'Daten 3', 'Daten 4', 'Daten 5', 'Daten 6')), type="spearman", use="pairwise.complete.obs"))$r, xlas=2)
Die beispielhafte Datei data.xlsx habe ich in den Anhang eingefügt, ebenso die Abbildung, die dabei generiert wird.

Gemäß Dokumentation sollten die einzelnen Beschriftungen senkrecht zur x-Achse stehen. Egal, welchen Wert ich xlas mitgebe, es tut sich überhaupt nichts.

Testweise habe ich auch andere Parameter auf die Beschriftungen der x-Achse geworfen. xsrt funktioniert beispielsweise. Eine Drehung von 90° als Workaround taugt aber leider nicht.

Ach ja, die installierten Versionen entsprechen den heute aktuellen Versionen, sprich

R 4.3.1
psych 2.3.6

Ich nutze Linux, andere Betriebssysteme konnte ich jetzt noch nicht testen.


Meine Frage ist jetzt: Mach ich irgendetwas falsch? Wenn ja, wäre ich euch sehr dankbar, mir einen Tipp zu geben. Ist das möglicherweise ein Bug? Wenn ja, wo melde ich den?


Vielen lieben Dank!!!
Dateianhänge
Die Abbildung ohne gekippte x-Achsenbeschriftung
Die Abbildung ohne gekippte x-Achsenbeschriftung
data.xlsx
die Beispieldaten
(6.68 KiB) 42-mal heruntergeladen
Zuletzt geändert von selbststaendiger am Di Sep 05, 2023 6:35 pm, insgesamt 1-mal geändert.
bigben
Beiträge: 2781
Registriert: Mi Okt 12, 2016 9:09 am

Re: Problem mit dem Parameter xlas in der Funktion corPlot()

Beitrag von bigben »

Da gibt es auch noch ein Crossposting hier: http://www.r-forum.de/packages-und-add- ... t1539.html
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
selbststaendiger
Beiträge: 5
Registriert: Mi Aug 30, 2023 3:56 pm

Re: Problem mit dem Parameter xlas in der Funktion corPlot()

Beitrag von selbststaendiger »

Hey, ja ich hatte es dort als erstes reingestellt, hab aber das Gefühl, dass dieses Forum hier generell aktiver ist. Daher auch hier. Ich hatte die beiden Foren als unabhängig voneinander gesehen.
selbststaendiger
Beiträge: 5
Registriert: Mi Aug 30, 2023 3:56 pm

Re: Problem mit dem Parameter xlas in der Funktion corPlot()

Beitrag von selbststaendiger »

Ach ja, ich hab es jetzt auch unter Windows versucht. Das Ergebnis ist identisch.
Athomas
Beiträge: 769
Registriert: Mo Feb 26, 2018 8:19 pm

Re: Problem mit dem Parameter xlas in der Funktion corPlot()

Beitrag von Athomas »

Ich habe Dein Beispiel etwas gestrafft, um mögliche "Seiteneffekte" auszuschließen:

Code: Alles auswählen

library(randcorr)
library(psych)

Num               <- 8
CorrMat           <- randcorr(Num)
Namen             <- paste0("Var", 1:Num)
rownames(CorrMat) <- Namen
colnames(CorrMat) <- Namen 

corPlot(CorrMat, xlas=2)
Das Ergebnis ist dasselbe :( ...

Ich halte es für möglich, dass die beabsichtigte „unabhängige“ Orientierung der x- und y-Achse über xlas und ylas so gar nicht realisierbar ist und lediglich ein gemeinsames „las“ (0 – parallel zu Achse, 1 – immer horizontal, 2 – senkrecht auf Achse) möglich wäre…
Ist das möglicherweise ein Bug? Wenn ja, wo melde ich den?
Ich würde tatsächlich mal den Autoren von „psych“ https://cran.r-project.org/web/packages ... index.html freundlich befragen, was da los ist…
bigben
Beiträge: 2781
Registriert: Mi Okt 12, 2016 9:09 am

Re: Problem mit dem Parameter xlas in der Funktion corPlot()

Beitrag von bigben »

Hallo Jungs,

die Sache ist komplizierter und scheint etwas mit dem Speichern der Daten zu tun zu haben. Wenn ich Athomas' Code copypaste und mit las = 0 laufen lasse, zeigt mir Rstudio etwas anderes an als das daraus abgespeicherte PNG während ein daraus (aus RStudio) gespeichertes PDF wieder das anzeigt, was ich in RStudio gesehen habe:

Hier das PNG mit las = 2:
Rplot, las=2.png
Hier das PNG mit las = 0

Code: Alles auswählen

corPlot(CorrMat, xlas=0)
kommt das hier dabei heraus:
Rplot, las=2.png
Und hier das PDF mit las = 2:
Rplot, las=0.pdf
(6.17 KiB) 35-mal heruntergeladen
Ich halte es für möglich, dass die beabsichtigte „unabhängige“ Orientierung der x- und y-Achse über xlas und ylas so gar nicht realisierbar ist
Der Code hinter corPlot nutzt die Funktion axis, einmal mit las = ylas und einmal mit las = xlas

Kann es sein, dass die eine Rendermethode das las aus dem plot-Kommando und die andere das aus dem axis Kommando liest? Wenn das so wäre, dann hätte der package-Autor auch keine Erklärung/Lösung.

Ich bin tiefer verwirrt als gedacht. Ich würde mir überlegen, mit der Grafik mit falscher Ausrichtung zu leben, eine andere Bildexportfunktion zu probieren und wenn das alles nicht passt, gibt es keinen Mangel an Alternativen, wie man in R Korrelationsmatrizen plotten kann: https://www.google.de/search?q=R+plot+c ... e&tbm=isch

LG,
Bernhard

Code: Alles auswählen

> sessionInfo()
R version 4.2.2 (2022-10-31 ucrt)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 22621)

Matrix products: default

locale:
[1] LC_COLLATE=German_Germany.utf8  LC_CTYPE=German_Germany.utf8   
[3] LC_MONETARY=German_Germany.utf8 LC_NUMERIC=C                   
[5] LC_TIME=German_Germany.utf8    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] psych_2.2.9  randcorr_1.0

loaded via a namespace (and not attached):
[1] compiler_4.2.2  parallel_4.2.2  tools_4.2.2     rstudioapi_0.14
[5] nlme_3.1-160    mnormt_2.1.1    grid_4.2.2      lattice_0.20-45
Dateianhänge
Rplot, las=0.png
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
selbststaendiger
Beiträge: 5
Registriert: Mi Aug 30, 2023 3:56 pm

Re: Problem mit dem Parameter xlas in der Funktion corPlot()

Beitrag von selbststaendiger »

Danke euch!

Ich hab dem psycho-Autor mal geschrieben. Vielleicht weiß er ja was.

Ansonsten versuche ich, diese Matrix anders zu erstellen. Eigentlich hab ich aber halt gar keinen Plan von R, ich baue nur etwas nach, unterstütze dabei jemanden bei einer Bachelorarbeit.
selbststaendiger
Beiträge: 5
Registriert: Mi Aug 30, 2023 3:56 pm

Re: Problem mit dem Parameter xlas in der Funktion corPlot()

Beitrag von selbststaendiger »

So, hab ne Antwort bekommen 8-)

Also er sagt, dass er da nen Bug reingebaut hat seit Version 2.3.3

In seiner aktuellen Development-Version ist es gefixt. Kann man installieren via

Code: Alles auswählen

install.packages("psych", repos="https://personality-project.org/r", type="source")
Es funktioniert! :D

Ich liebe Open-Source-Software!!!
Antworten