Seite 1 von 1
Diagramm, Datenreihen formatieren, feste Farbe zuweisen
Verfasst: So 10. Nov 2024, 21:47
von StefKe
Hallo in die Runde, ich versuche grad in einem Diagramm den Datenreihen eine feste Farbe zuzuweisen - was auch kein Problem ist.
Sobald aber Datenreihen hinzugefügt, oder gelöscht werden ändert Calc die Farben entsprechend der unter: Extras>Optionen>Diagramme>Grundfarben festgelegten Reihenfolge.
Kann diese Verhalten geändert werden, so dass die Farben den Datenreihen fest zugewiesen werden?
PS: ich nutze Version 7.6.7.2
Danke für jeden Tip
Stefan
Re: Diagramm, Datenreihen formatieren, feste Farbe zuweisen
Verfasst: Mo 11. Nov 2024, 10:50
von blende8
Habe da gerade mal ausprobiert, mit einem Balkendiagramm.
Da bleiben die Farben erhalten, wenn ich eine neue Spalte hinzufüge.
Version 7.6.4
Re: Diagramm, Datenreihen formatieren, feste Farbe zuweisen
Verfasst: Mo 11. Nov 2024, 12:18
von StefKe
Hallo, wenn eine letzte Spalte hinzugefügt und wieder gelöscht wird bleiben die Farben der vorhergenden Spalten / Datenreihen erhalten.
Aber wenn, von Spalte A:F die (6 Datenreihen) Spalte C gelöscht wird erhalten D:F eine neue Farbe.
Re: Diagramm, Datenreihen formatieren, feste Farbe zuweisen
Verfasst: Mo 11. Nov 2024, 12:49
von blende8
Auch das ist bei mir nicht so.
Kurios.
Re: Diagramm, Datenreihen formatieren, feste Farbe zuweisen
Verfasst: Mo 11. Nov 2024, 16:06
von StefKe
Danke, ich habe es grad getestet.
Eine Testtabelle erstellt, Diagramm eingefügt, Spalten entfernt und wieder hinzugefügt - die Farben verändern sich nicht, so wie es sein sollte.
In der Originaltabelle wird der Diagrammbereich per Python definiert:
Code: Alles auswählen
oAdr = [sheet_thingspeak.getCellRangeByName(f"A{row_start}:A{row_end}").getRangeAddress()]
if form ["chb_esp_aussen" ].State:
oAdr.append( sheet_thingspeak.getCellRangeByName(f"C{row_start}:C{row_end}").getRangeAddress())
if form ["chb_raspi_iu" ].State:
oAdr.append(sheet_thingspeak.getCellRangeByName(f"D{row_start}:D{row_end}").getRangeAddress())
if form ["chb_rapi_io" ].State:
oAdr.append(sheet_thingspeak.getCellRangeByName(f"E{row_start}:E{row_end}").getRangeAddress())
if form ["chb_rapi_timecontrol" ].State:
oAdr.append( sheet_thingspeak.getCellRangeByName(f"F{row_start}:F{row_end}").getRangeAddress())
Je nach angewählter Checkbox wird der Datenbereich ausgewählt. Dann muss an der Stelle die Ursache liegen. Da hab ich noch bisschen zum Basteln

Re: Diagramm, Datenreihen formatieren, feste Farbe zuweisen
Verfasst: Mo 11. Nov 2024, 16:29
von karolus
Hallo
Auch wenn dein
python-interpreter das so akzeptiert… NEIN bitte kein Leerzeichen zwischen »form« und »[…]«
Code: Alles auswählen
oAdr = [sheet_thingspeak[f"A{row_start}:A{row_end}"].RangeAddress]
if form["chb_esp_aussen" ].State:
oAdr.append( sheet_thingspeak[f"C{row_start}:C{row_end}"].RangeAddress)
if form["chb_raspi_iu" ].State:
oAdr.append(sheet_thingspeak[f"D{row_start}:D{row_end}"].RangeAddress)
if form["chb_rapi_io" ].State:
oAdr.append(sheet_thingspeak[f"E{row_start}:E{row_end}"].RangeAddress)
if form["chb_rapi_timecontrol" ].State:
oAdr.append( sheet_thingspeak[f"F{row_start}:F{row_end}"].RangeAddress)
so sind die Zeilen kürzer und lesbarer!
und wenn man kurz drüber nachdenkt:
Code: Alles auswählen
oAdr = [sheet_thingspeak[f"A{row_start}:A{row_end}"].RangeAddress]
for key, col in { "chb_esp_aussen": "C",
"chb_raspi_iu": "D",
"chb_rapi_io": "E",
"chb_rapi_timecontrol": "F"}.items():
if form[ key ].State:
oAdr.append( sheet_thingspeak[f"{col}{row_start}:{col}{row_end}"].RangeAddress)
Re: Diagramm, Datenreihen formatieren, feste Farbe zuweisen
Verfasst: Mo 11. Nov 2024, 16:35
von StefKe
Oha, das ist behoben.... danke.
zum 2. Teil des Codes:

,
aber eine Lösung die Farbe der Linien mittels Pyton zu beeinflussen scheint nicht zu existieren...
Re: Diagramm, Datenreihen formatieren, feste Farbe zuweisen
Verfasst: Mo 11. Nov 2024, 23:08
von karolus
StefKe hat geschrieben: ↑Mo 11. Nov 2024, 16:35
aber eine Lösung die Farbe der Linien mittels Pyton zu beeinflussen scheint nicht zu existieren...
Nein, eine Lösung via
Pyton existiert mangels »Pyton« nicht.
Eine Lösung per python
existiert auch nicht, bevor sie jemand schreibt!
Diagrammtyp? Beispielsdatei?
Re: Diagramm, Datenreihen formatieren, feste Farbe zuweisen
Verfasst: Di 12. Nov 2024, 00:12
von StefKe
ja, die lieben Rechtschreibfehler - passiert

Ich hab eine Beispieldatei zurecht gebastelt. Das Pythonscript ist im Dokument eingebettet.
Code: Alles auswählen
oDoc = XSCRIPTCONTEXT.getDocument()
sheet_diagramm = oDoc.Sheets[0]
sheet_thingspeak = oDoc.Sheets[1]
form = sheet_diagramm.DrawPage.Forms[0]
oChart = sheet_diagramm.Charts[0]
def chart_range_change(row_start, row_end):
oAdr = [sheet_thingspeak[f"A{row_start}:A{row_end}"].RangeAddress]
if form["chb_esp_aussen"].State:
oAdr.append( sheet_thingspeak[f"C{row_start}:C{row_end}"].RangeAddress)
if form["chb_raspi_iu"].State:
oAdr.append(sheet_thingspeak[f"D{row_start}:D{row_end}"].RangeAddress)
if form["chb_rapi_io"].State:
oAdr.append(sheet_thingspeak[f"E{row_start}:E{row_end}"].RangeAddress)
if form["chb_rapi_timecontrol"].State:
oAdr.append(sheet_thingspeak[f"F{row_start}:F{row_end}"].RangeAddress)
if form["chb_lf"].State:
oAdr.append(sheet_thingspeak[f"G{row_start}:G{row_end}"].RangeAddress)
if form["chb_heaterstatus"].State:
oAdr.append(sheet_thingspeak[f"H{row_start}:H{row_end}"].RangeAddress)
if form["chb_fanstatus"].State:
oAdr.append(sheet_thingspeak[f"I{row_start}:I{row_end}"].RangeAddress)
if form["chb_timecontrolstatus"].State:
oAdr.append(sheet_thingspeak[f"J{row_start}:J{row_end}"].RangeAddress)
oChart.setRanges(oAdr)
def main(*args):
row_start = 3
row_end = 999
chart_range_change(row_start, row_end)
if __name__ == "__main__":
main()
Danke - Stefan
- forum.ods
- (230.78 KiB) 205-mal heruntergeladen