La bibliothèque God plot (correctement la bibliothèque wrapper) et le vénéré Plotly Express
import plotly.express as px
px.parallel_categories(
px.data.tips(), color="size"
)
Il est facile d'écrire un tracé de coordonnées parallèles avec des données de catégorie, mais contrairement à d'autres tracés, il n'est pas possible de passer les données de catégorie pandas.Series
ou List
au paramètre color
.
Je peux le faire autour de la ligne scatter
, mais ...
px.parallel_categories(
px.data.tips(), color="time"
)
Et, lors du passage de la colonne size
remplie avec le type ʻint à la colonne
time` des données de catégorie, l'erreur suivante se produit,
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
Dans size
, ʻUn nombre qui sera interprété comme une couleur selon parcats.line.colorscale` a été créé, mais ce n'est plus possible.
Mais
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
)
Quand tu fais
La «couleur» que je voulais juste définir comme valeur d'échelle de couleur est également affichée sur le graphique. C'est redondant et je déteste ça ... N'est-il pas possible de créer un tracé de coordonnées parallèles clairement codé par couleur avec des données catégorielles?
dimensions
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"]
)
Puisque vous pouvez réduire les colonnes à afficher avec les dimensions
, vous pouvez le faire en supprimant les colonnes inutiles ici!
Hmmm, mais je veux que l'interface soit correcte avec les données de catégorie pandas.Series
sans aucune astuce ...
Recommended Posts