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?
dimensionstime_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