Autor Beitrag
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Di 21.07.15 13:23 
Hallo zusammen,

der ein oder andere hier hat ja schonmal was mit Plots und Diagrammen gemacht, vielleicht könnt ihr mir da was empfehlen.

In Pi werden die Farben für Plots aktuell zufällig zugeordnet (sofern keine im Programm vergeben wurden). Das funktioniert meistens, kann aber auch mal sehr ähnliche Farben erzeugen. Man bräuchte also irgendwas anderes.
Die einfachste Variante scheint mir eine Colormap mit einer Hand voll (10? 20? 30?) Farben zu sein, die sich dadurch auszeichnen, dass sie gut unterscheidbar sind. Wer mehr braucht, bekommt halt wieder Zufallsfarben.

Gibt es für sowas vielleicht schon eine Konvention, oder hat schonmal jemand so etwas abgeleitet? Die "üblichen" Farbtabellen (z.B. 16bit Windows, Web Safe, ...) sind ja eher nach Farbähnlichkeit gruppiert, das ist quasi genau das Gegenteil von dem was ich suche.

Viele Grüße,
Martok

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 21.07.15 13:28 
Ich benutze dafür den HSV Farbraum. Damit ist die Ähnlichkeit nicht sehr stark. Dabei gehe ich zuerst nach dem Farbwert, verändere dann die Helligkeit und am Ende benutze ich auch noch Farben mit anderer Sättigung, aber da wird die Ähnlichkeit dann natürlich immer stärker.
Martok Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Di 21.07.15 18:04 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Ich benutze dafür den HSV Farbraum.
Hab ich auch schon überlegt. Einfach den Farbkreis in X Teile geteilt und dann reiherum noch mit verschiedenen S,B-Werten, oder wie?

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 21.07.15 19:17 
Ja, genau. Ich habe dafür einen Algorithmus benutzt, der quasi immer die größte verfügbare Lücke benutzt und die Farbe in deren Mitte benutzt. Sprich zuerst fange ich an und teile den Farbkreis in drei Teile, dann habe ich drei Farben, dann teile ich wieder und habe insgesamt sechs. Bei einer festgelegten Anzahl (bei mir sind das die sechs genannten) gehe ich dann auf die halbe Helligkeit, dann teile ich den Farbraum erneut, dann kommt noch die Sättigung ins Spiel und dann noch Helligkeiten bei 25% und 75% usw.

In meinem Fall habe ich auch noch gestrichelte und gepunktete Linien benutzt (bevor ich die Helligkeit das erste Mal halbiere, weil es stärker unterscheidbar ist), das könnte für dich ja auch eine Möglichkeit sein.

So bekommt man schon recht gute Ergebnisse und vor allem kann man so prinzipiell unendlich viele Farben erzeugen, nur werden sie eben immer ähnlicher. Aber sie sind nicht sofort zu ähnlich, sondern erst bei einer größeren Anzahl an Farben.

Für diesen Beitrag haben gedankt: Martok
FinnO
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1331
Erhaltene Danke: 123

Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
BeitragVerfasst: Mi 22.07.15 03:50 
Moin,

oft ist es gewünscht, dass die Farbauswahl in irgendeiner Weise der CI des Nutzers oder sonstigen Vorlieben entspricht. Auch sollte es die Möglichkeit geben für Print in schwarz-weiß zu plotten oder sonstige Vorlieben zu berücksichtigen. Da finde ich den Weg von Mathematica mit einem Set von Farben die (teilweise) mit bedacht ausgewählt wurden schon recht sinnvoll. So ein Set kann man auch selbst erstellen, etc.

Natürlich kann eins dieser Sets auch aus dem o.g. HSV-Splitting bestehen.

Gruß
Finn
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Mi 22.07.15 08:11 
Man muss auch an Leute denken, die z.B. eine Rot-Grün-Schwäche habe.
Daher finde ich es sinnvoll, zwar einen Satz Farben vorzugeben, diesen aber für den Benutzer änderbar zu machen.

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
Martok Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Mi 22.07.15 17:50 
Mathematica hat für die Farbtabellen tatsächlich einfach ein paar Listen. Gibts z.b. hier zu sehen, wenn man ganz unten auf der Seite die "Neat Examples" aufklappt (Warum kann man Wolfram Documentation-Seiten nicht ordentlich verlinken?).

Eure Antwort wäre dann also "Rechne dir ein paar defaults aus und lass den User die ändern". Ist eigentlich nie ein schlechter Plan ;)

Wird wohl doch Zeit für die global-scope-configs.

Edit:

Ja, doch, das ist lesbarer als Random($FFFFFF):
user defined image
mises_stress
Einloggen, um Attachments anzusehen!
_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."