Die God-Plot-Bibliothek (korrekt die Wrapper-Bibliothek) und der verehrte "Plotly Express"
import plotly.express as px
px.parallel_categories(
px.data.tips(), color="size"
)
Es ist einfach, ein paralleles Koordinatendiagramm mit Kategoriedaten zu schreiben, aber im Gegensatz zu anderen Diagrammen ist es nicht möglich, die Kategoriedaten "pandas.Series" oder "List" an den Parameter "color" zu übergeben. Ich kann es um "Scatter" -Linie machen, aber ...
px.parallel_categories(
px.data.tips(), color="time"
)
Beim Wechsel von der mit dem Typ "int" gefüllten Spalte "size" zur Spalte "time" der Kategoriedaten tritt der folgende Fehler auf:
ValueError:
Invalid element(s) received for the 'color' property of parcats.line
Invalid elements include: ['Dinner', 'Dinner', 'Dinner', 'Dinner', 'Dinner', 'Dinner', 'Dinner', 'Dinner', 'Dinner', 'Dinner']
The 'color' property is a color and may be specified as:
- A hex string (e.g. '#ff0000')
- An rgb/rgba string (e.g. 'rgb(255,0,0)')
- An hsl/hsla string (e.g. 'hsl(0,100%,50%)')
- An hsv/hsva string (e.g. 'hsv(0,100%,100%)')
- A named CSS color:
aliceblue, antiquewhite, aqua, aquamarine, azure,
beige, bisque, black, blanchedalmond, blue,
blueviolet, brown, burlywood, cadetblue,
chartreuse, chocolate, coral, cornflowerblue,
cornsilk, crimson, cyan, darkblue, darkcyan,
darkgoldenrod, darkgray, darkgrey, darkgreen,
darkkhaki, darkmagenta, darkolivegreen, darkorange,
darkorchid, darkred, darksalmon, darkseagreen,
darkslateblue, darkslategray, darkslategrey,
darkturquoise, darkviolet, deeppink, deepskyblue,
dimgray, dimgrey, dodgerblue, firebrick,
floralwhite, forestgreen, fuchsia, gainsboro,
ghostwhite, gold, goldenrod, gray, grey, green,
greenyellow, honeydew, hotpink, indianred, indigo,
ivory, khaki, lavender, lavenderblush, lawngreen,
lemonchiffon, lightblue, lightcoral, lightcyan,
lightgoldenrodyellow, lightgray, lightgrey,
lightgreen, lightpink, lightsalmon, lightseagreen,
lightskyblue, lightslategray, lightslategrey,
lightsteelblue, lightyellow, lime, limegreen,
linen, magenta, maroon, mediumaquamarine,
mediumblue, mediumorchid, mediumpurple,
mediumseagreen, mediumslateblue, mediumspringgreen,
mediumturquoise, mediumvioletred, midnightblue,
mintcream, mistyrose, moccasin, navajowhite, navy,
oldlace, olive, olivedrab, orange, orangered,
orchid, palegoldenrod, palegreen, paleturquoise,
palevioletred, papayawhip, peachpuff, peru, pink,
plum, powderblue, purple, red, rosybrown,
royalblue, rebeccapurple, saddlebrown, salmon,
sandybrown, seagreen, seashell, sienna, silver,
skyblue, slateblue, slategray, slategrey, snow,
springgreen, steelblue, tan, teal, thistle, tomato,
turquoise, violet, wheat, white, whitesmoke,
yellow, yellowgreen
- A number that will be interpreted as a color
according to parcats.line.colorscale
- A list or array of any of the above
In "Größe" wurde "Eine Zahl, die gemäß parcats.line.colorscale als Farbe interpretiert wird" erstellt, dies ist jedoch nicht mehr möglich.
Aber
time_color_map = {t: i for i, t in enumerate(px.data.tips()["time"].unique())}
colors = px.data.tips()["time"].replace(time_color_map)
px.parallel_categories(
px.data.tips(), color=colors
)
Wenn Sie das tun
Die Farbe, die ich nur als Farbskalenwert festlegen wollte, wird auch in der Grafik angezeigt. Es ist überflüssig und ich hasse es ... Ist es nicht möglich, ein paralleles Koordinatendiagramm zu erstellen, das eindeutig mit Kategoriedaten farbcodiert ist?
time_color_map = {t: i for i, t in enumerate(px.data.tips()["time"].unique())}
colors = px.data.tips()["time"].replace(time_color_map)
px.parallel_categories(
px.data.tips(), color=colors, dimensions=["sex", "smoker", "day", "time", "size"]
)
Da Sie die anzuzeigenden Spalten mit "Dimensionen" eingrenzen können, können Sie hier unnötige Spalten entfernen!
Hmmm, aber ich möchte, dass die Benutzeroberfläche mit den Kategoriedaten pandas.Series
ohne Tricks in Ordnung ist ...
Recommended Posts