Seite 1 von 1

x- und y-Achse vertauschen

Verfasst: Di, 21.04.2015 10:02
von loriotto
Hallo

ich suche eine Möglichkeit, wie ich die X- und Y-Achse in einem X/Y-Diagramm vertauschen kann. Ich weiss, mit Datenbereiche kann ich die einzelnen Datenreihen tauschen. Allerdings hab' ich Dutzende Spalten mit Y-Werten, und alle haben die gleichen X-Werte. [Es handelt sich um einzelne Zeitreihen verschiedener Messwerte.]
Müsste ich alle Datenbereiche "vertauschen", dann bin ich da mind. 1 Stunde dran. Und da ich fast täglich solche Diagramme erstelle, ist eine automatische Funktion schon sehr viel praktischer.

Vielen Dank für jegliche Hilfe!
loriotto

Re: x- und y-Achse vertauschen

Verfasst: Di, 21.04.2015 10:54
von Karolus
Möchtest du jetzt Achsen im Diagramm tauschen oder die zugrundliegenden Daten anders zuordnen?

Eine Beispielsdatei wäre zur Klärung der Frage vmtl. hilfreich ( bitte keinen Screenshot )

Re: x- und y-Achse vertauschen

Verfasst: Mi, 22.04.2015 15:30
von loriotto
Salut Karolus

ich möchte, dass das Diagramm die Argumente und die Werte von der X zur Y-Achse setzt resp. umgekehrt, schaut etwa so aus:
Bild
Du findest diese Beispieldatei auf http://www.roxplore.ch/download/for.ods. Daraus ist auch ersichtlich, was ich erhalte und was ich zu erhalten suche (dies automatisch, nicht für jede Datanreihe manuell anpassen...)

Vielen Dank für jegliche Hilfe.
loriotto

Re: x- und y-Achse vertauschen

Verfasst: Mi, 22.04.2015 19:35
von clag
Hallo Loriotto,

zu deinem eigentlichen Wunsch "Achsen tauschen" kann ich dir nicht wirklich eine Lösung anbieten,
was du da tust ist ja gegen das Prinzip dieser Diagrammform.
Per Makro könnte man die Datenbereiche vermutlich da so "reinwürgen",
aber dann müsste man ja auch wenigsten die Datenbereiche immer wieder abfragen.

Da du schreibst das du das Täglich brauchst, würde ich mir einmal eine Vorlage-Datei mit
einem Diagramm erstellen das den maximal zu erwartenden Datenbereich abdeckt.

Dann brauchst du in Zukunft nur aus der Vorlage eine Neue Datei erzeugen, in den Datenbereich
die neuen Daten einfügen und schon zeigt dein Diagramm das Gewünschte an.
Eventuell nicht benötigte Spalten und Zeilen kannst du durch ausblenden dieser in der Tabelle
im Diagramm unterdrücken.

Dann kannst du in zwei Minuten ein neues Diagramm in dieser speziellen Art erstellen!

Re: x- und y-Achse vertauschen

Verfasst: Do, 23.04.2015 13:36
von loriotto
Hallo clag

warum ich "gegen das Prinzip dieser Diagrammform" verstosse, kann ich nicht nachvollziehen - ist ja eigentlich egal, was X oder Y ist, nicht?

Das mit der Vorlage mache ich im Moment auch so, ist aber nicht so elegant. Einmal habe habe ich nur 100 Zeilen in 100 Spalten, ein anderes Mal sind es vielleicht 10000 Zeilen in 30 Spalten... Die Struktur der Tabelle ist auch immer wieder anders - nicht so einfach mit einer Vorlage.

ich frage mich einfach, warum OO nicht eine einfache Möglichkeit für das Vertauschen der Achsen anbietet....

wer weiss, vielleicht hat ja jemand noch eine Idee...?

Gruss, loriotto

Re: x- und y-Achse vertauschen

Verfasst: Do, 23.04.2015 14:02
von Karolus
Hallo
ist ja eigentlich egal, was X oder Y ist, nicht?
Wenn es egal ist, kannst du es auch genausogut so übernehmen wie x-yDiagramme in der Tradition `westlicher Statistik|Mathematik`[1] dargestellt werden.

[1]Ich schreibe das so, weil ich nicht weiss ob es Sprachgebiete/Länder gibt die tatsächlich eine gespiegelte Anordnung zur Visualisierung von Datenreihen gewählt haben.

Re: x- und y-Achse vertauschen

Verfasst: Fr, 24.04.2015 08:38
von loriotto
Hallo Karolus

wir kommen vom Thema ab... Grundsätzlich ist es egal, was üblich ist, ob X/Y oder Y/X oder A/B oder ç%/*, aber ICH möchte und muss die Daten so darstellen. Und darum bitte ich um Hilfe - und bin dankbar für jeden Tipp, der mir hilft, in der Sache weiterzukommen. Und sich nicht einfach auf Nebenschauplätze bezieht.

Zurück zur Sache: ich möchte, dass die Argumente auf der vertikalen Achse und die Werte auf der horizontalen Achse aufgetragen werden - wie kann ich das automatisiert für viele Zahlenreihen machen?

Gruss, loriotto

Re: x- und y-Achse vertauschen

Verfasst: Fr, 24.04.2015 12:33
von Karolus
Das bisher einzig erfolgversprechende Verfahren scheint die Quelldaten neu zu arrangieren (per Script)
vorher

Code: Alles auswählen

x1    Y1_1    Y2_1    Y3_1
x2    Y1_2    Y2_2    Y3_2
x3    Y1_3    Y2_3    Y3_3
x4    Y1_4    Y2_4    Y3_4
x5    Y1_5    Y2_5    Y3_5
nachher

Code: Alles auswählen

Y1_1    x1            
Y1_2    x2            
Y1_3    x3            
Y1_4    x4            
Y1_5    x5            
Y2_1          x1      
Y2_2          x2      
Y2_3          x3      
Y2_4          x4      
Y2_5          x5      
Y3_1                x1
Y3_2                x2
Y3_3                x3
Y3_4                x4
Y3_5                x5
und die geänderten Quelldaten zuzuweisen.

Wo kommen die Daten eigentlich her? Gibts da keine Möglichkeit die gleich in der passenden Struktur einzupflegen ??

Re: x- und y-Achse vertauschen

Verfasst: Fr, 24.04.2015 13:41
von clag
Hallo loriotto,

habe auch noch mal das manuelle ändern überdacht,
das ist eigentlich ziemlich easy und ist auch in wenigen Sekunden bis Minuten erledig.

Du erstellst zuerst ein einfaches xy Diagramm nur mit dem ersten Werte Paar Spalte A und B
dann doppelklickst du das Diagramm zum bearbeiten
Menü > Format > Datenbereiche > Datenreihen
X-Werte makieren und in der Eingagezeile die BereichsAdresse kopieren $Sheet1.$A$1:$A$151
Tastatur in shift-lock und überschreibe Modus setzen
nun ersetzt du die A durch B "$Sheet1.$A$1:$A$151" "$Sheet1.$B$1:$B$151" und für die Y-Werte von B auf A ändern
klicke 8 mal hinzufügen
wiederhole das einfügen von "$Sheet1.$A$1:$A$151"
für die neu eingefügten Bereiche und ändere jeweils die 2 A für die X-Werte

das geht in zwei Minuten bei deiner Beispieldatei!

(eine Zigarettenpause weniger und schon sind 10 Diagramme umgestellt :D )

Re: x- und y-Achse vertauschen

Verfasst: Fr, 24.04.2015 13:53
von Karolus
Hallo
@clag:
Naja wenn auch mal ein Bereich von 100 Spalten (siehe oben) umzustellen ist wird das Verfahren doch etwas nervig...

Re: x- und y-Achse vertauschen

Verfasst: Fr, 24.04.2015 14:04
von clag
Hallo
Karolus hat geschrieben:Naja wenn auch mal ein Bereich von 100 Spalten (siehe oben) umzustellen ist wird das Verfahren doch etwas nervig...
ok ja :shock: aber wenn es nur "mal" also hin und wieder ist kann man vielleicht erst mal damit leben

wer außergewöhnliche Ergebnisse will muss auch bereit sein außergewöhnlich Wege zu gehen, finde ich jedenfalls

Re: x- und y-Achse vertauschen

Verfasst: Fr, 24.04.2015 15:48
von Karolus
Hallo

Hier ist ein Enwurf wie es funktionieren könnte...

Code: Alles auswählen

def transform_source_data(data):
    switched = []
    for c in range(1, len(data[0])):
        for row in data:
            rowdata = [row[c]] + ['']*(len(data[0])-1)
            rowdata[c] = row[0]
            switched.append(tuple(rowdata))
    return tuple(switched)

def main(*_):

    doc = XSCRIPTCONTEXT.getDocument()#desktop.CurrentComponent
    sheets = doc.Sheets
    sheet = sheets.getByIndex(0)
    chart = sheet.Charts.getByIndex(0)
    adr = chart.Ranges[0]
    source_address = (adr.StartColumn,
                      adr.StartRow,
                      adr.EndColumn,
                      adr.EndRow,
                      adr.Sheet)

    source_data = sheets.getCellRangeByPosition(*source_address).DataArray
    
    target_data = transform_source_data(source_data)
    
    target_address = (adr.StartColumn,
                      adr.StartRow,
                      adr.EndColumn,
                      adr.StartRow + len(target_data) -1,
                      adr.Sheet)
    
    target = sheets.getCellRangeByPosition(*target_address)
    target.setDataArray(target_data)
    chart.setRanges((target.RangeAddress,))
momentan läuft das nur im ersten Diagramm und nur auf dem ersten Tabellenblatt!!
Und es überschreibt beim Transponieren der Quelldaten ohne Nachfrage eventuelle Daten unterhalb des ursprünglichen Bereichs.

Siehe angehängtes Beispiel.
xy_wechseln.ods
(20.22 KiB) 138-mal heruntergeladen

Re: x- und y-Achse vertauschen

Verfasst: Fr, 24.04.2015 15:49
von loriotto
Hallo calg und Karolus

vielen Dank schon mal für euer Mitdenken.

1. Woher die Daten kommen: diese kommen aus ellenlangen Textdateien aus Messgeräten, da habe ich (leider) keinen Einfluss auf das Format.
2. Zudem (anders als in meiner Beispieldatei) müssen die Argumente auch nicht immer gleich sein, d.h. X1 in der einen Zeitreihe muss nicht zwingend X1 in einer zweiten Datenreihe sein. Dies macht alles dann noch komplizierter...
3. Zudem (ebenfalls anders als in meiner Beispieldatei) ist die Anzahl der Zeilen in den Datenreihen auch nicht immer gleich - im Voraus schlecht abzuschätzen, was da alles möglich ist.
4. @clag: das mit der Copy-Bearbeitung im "Datenbereich > Datenreihen" hab' ich bislang so gemacht, aber wie Karolus schon schreibt, bei 100 Datenreihen ist dies ein (weiteres) Elend - und da ich nicht rauche habe ich gar keine Rauchpausen, die ich dazu nutzen könnte - abe rmit dem Kaffee wär's vielleicth ne Idee ;-)

5. Okay, ich denke, ich muss da vielleicht doch den von Karolus vorgeschlagenen Weg mit dem Neuarrangieren... sehr ungern und auch sehr aufwändig, eine "Umkehrfunktion" - man könnte auch von Umklapp-Funktion in den Diagrammen wäre halt schon sehr schön!

Schönes Wochenende, wenn man sich nicht mehr liest.
loriotto

Re: x- und y-Achse vertauschen

Verfasst: Fr, 24.04.2015 16:15
von Karolus
Hallo

@1. dann könnte man im Prinzip schon vor|bei dem Import ein Script zuschalten das die Daten in die benötigte Form bringt.

@2. das dürfte nicht stören, solange alle ursprünglichen x-Werte in der ersten Spalte stehen

@3. das war bereits klar - kein Problem solange Spaltenanzahl mal Zeilenanzahl nicht mehr als eine Million ergibt.

@5. Wenn das per Script funktioniert, hält sich der Aufwand in Grenzen.