Die lc rgb variable
alle Saiten auf ganze Zahlen konvertieren, bevor sie zu einer Farbe zu bewerten und dies wird nicht wandle den String "rot" in die Zahl 0xff0000 um. Also müssen wir unsere eigene Konvertierungsfunktion definieren.
Sie können die Idee von Antwort https://stackoverflow.com/a/35729052/7010554 verwenden. Hier ist eine mögliche Implementierung:
colorSet(name, rgb) = sprintf("color_%s = %d", name, rgb)
colorGet(name) = value(sprintf("color_%s", name))
eval colorSet("magenta", 0xff00ff)
eval colorSet("red", 0xff0000)
eval colorSet("green", 0x00ff00)
eval colorSet("black", 0x000000)
eval colorSet("dark_yellow", 0xc8c800)
print colorGet("green")
print color_green
set xrange [0:10]
set yrange [0:10]
plot "input.dat" using 1:2:3:4:(colorGet(stringcolumn(5))) with vectors lw 3 lc rgb variable
Die Funktionen colorSet(name, rgb)
und `colorGet (Name) erstellen und Zugriffs Variablen mit Namen der Form COLOR_GREEN, Color_Navy, ... Die Werte dieser Variablen sind die entsprechenden rgb-Werte.
Sie können Farben beliebig definieren, der Name darf keine Bindestriche enthalten. Die internen Farbdefinitionen von gnuplot werden mit dem Befehl show colors
angezeigt.
Ich habe nicht erwartet, meine eigene Konvertierungsfunktion zu definieren. Da die Farbnamen definiert waren, dachte ich, es wäre einfacher. Aber danke @maij, das hat mein Problem gelöst. – ACR