[PYTHON] des modèles de tracé et de mise en page qui sont susceptibles d'être utilisés dans les diagrammes de dispersion

introduction

C'est un modèle de trace, de mise en page qui semble être utilisé lors du dessin d'un diagramme de dispersion avec Veuillez effacer les parties inutiles selon le cas

environnement

Mac OS python 3.8.5 plotly 4.12.0

pip

pip install plotly

modèle de trace

import plotly.offline as offline
import plotly.graph_objs as go

import plotly
colors = plotly.colors.DEFAULT_PLOTLY_COLORS
"""
Obtenir la couleur par défaut
['rgb(31, 119, 180)', 'rgb(255, 127, 14)', 'rgb(44, 160, 44)', 'rgb(214, 39, 40)', 'rgb(148, 103, 189)',
 'rgb(140, 86, 75)', 'rgb(227, 119, 194)', 'rgb(127, 127, 127)', 'rgb(188, 189, 34)', 'rgb(23, 190, 207)']
"""

from plotly.validators.scatter.marker import SymbolValidator
raw_symbols = SymbolValidator().values
"""
Valeurs pouvant être utilisées pour les symboles de repère
[0, '0', 'circle', 100, '100', 'circle-open',...
Il y a 474
https://plotly.com/python/marker-style/#custom-marker-symbols
"""
data = []
trace = go.Scatter(
    x=[i for i in range(10)],
    y=[i for i in range(10)],
    yaxis="y1",  #yth?axe"y2", "y3", "y4", .. https://plotly.com/python/multiple-axes/#multiple-axes
    line=dict(color=colors[0], width=6, dash="dashdot"),
    # dash="dash", "dot" or "dashdot" https://plotly.com/python/line-charts/#style-line-plots

    line_shape="hv",
    #Étape etc."hv", "vh", "hvh", "vhv", "spline", "liner" https://plotly.com/python/legend/#hiding-the-trace-initially

    marker=dict(color=colors[0], size=10, line=dict(color="red", width=2)),
    # line=Informations sur le contour du marqueur https://plotly.com/python/marker-style/#add-marker-border

    mode="lines+markers",
    # "lines", "lines+markers" or "markers" https://plotly.com/python/line-charts/#line-plot-modes

    marker_symbol=raw_symbols[0],  #Spécifiez la forme du marqueur https://plotly.com/python/marker-style/#custom-marker-symbols
    name="sample",  #Utilisé dans la légende
    hovertemplate="y: %{y}<br>x: %{x}",
    opacity=1,  #Transparence 0~1 https://plotly.com/python/marker-style/#color-opacity
    visible=True,  # True, False or legendonly
    showlegend=True,  #Affichage de la légende Vrai ou Faux
    legendgroup="sample"  #Les traces avec la même chaîne sont affichées/Les bascules masquées synchronisent https://plotly.com/python/legend/#grouped-legend-items
)
data.append(trace)

modèle de mise en page

De base

title, xaxis, etc. Si vous l'avez pour le moment, vous pouvez formater la mise en page du graphique

layout = go.Layout(
    title=dict(text='<b>sample title</b><br>text', font=dict(size=16)),
    xaxis=dict(title=dict(text='x axis label', font=dict(size=12)), tickfont=dict(size=12), autorange=True),
    # https://plotly.com/python/reference/layout/xaxis/
    
    yaxis=dict(title='y axis label'),
    font=dict(size=16),  #Police globale
    newshape=dict(line=dict(color="cyan", width=4, dash="solid")),
    # dash='solid', 'dot', 'dash', 'longdash', 'dashdot','longdashdot'
    autosize=True,
    showlegend=True, )

fig = dict(data=data, layout=layout)

offline.plot(fig, include_plotlyjs="cdn", auto_open=True, filename='sample plotly.html', config={
    'modeBarButtonsToAdd': ['drawline', 'drawopenpath', 'drawclosedpath', 'drawcircle', 'drawrect', 'eraseshape']}, )

title=dict(text='<b>sample title</b><br>text' Vous pouvez utiliser des balises html à la place des chaînes de caractères, en gras avec <b> str </ b>, rompre avec <br> Si vous voulez le colorier en gras, comme <b style =" color: red "> test </ b>

Ajout d'un bouton pour dessiner une ligne ou un cercle dans le coin supérieur droit sur la dernière ligne config={'modeBarButtonsToAdd': ['drawline', 'drawopenpath', 'drawclosedpath', 'drawcircle', 'drawrect', 'eraseshape']}

2ème axe

Définissez yaxis =" y2 " dans trace

yaxis2 =

layout = go.Layout(
    title=dict(text='<b>sample title</b><br>text', font=dict(size=16)),
    xaxis=dict(title=dict(text='x axis label', font=dict(size=12)), tickfont=dict(size=12), tickangle=0),
    # https://plotly.com/python/reference/layout/xaxis/

    yaxis=dict(title="y axis label"),  #Identique à xaxis
    yaxis2=dict(title="y2 axis label", overlaying="y", side="right", showgrid=False),
    font=dict(size=16),  #Police globale
    newshape=dict(line=dict(color="cyan", width=4, dash="solod")),
    # dash='solid', 'dot', 'dash', 'longdash', 'dashdot','longdashdot'
    autosize=True,
    showlegend=True, )

fig = dict(data=data, layout=layout)

offline.plot(fig, include_plotlyjs="cdn", auto_open=True, filename='sample plotly.html', config={
    'modeBarButtonsToAdd': ['drawline', 'drawopenpath', 'drawclosedpath', 'drawcircle', 'drawrect', 'eraseshape']}, )

Autres choses à utiliser

Lorsque vous souhaitez modifier le format de police du titre et de l'axe x, lorsque vous souhaitez décider de la plage de l'axe x, lorsque vous souhaitez modifier d'autres éléments tels que le survol et le pic

layout = go.Layout(
    title=dict(text='<b>sample title</b><br>text', font=dict(family="Arial", size=16, color="black")),
    xaxis=dict(title=dict(text='x axis label', font=dict(family="Arial", size=12, color="black")),
               tickfont=dict(family="Arial", size=12, color="black"), type="-", tick0=0, dtick=1, range=[0, 100],
               autorange=True, rangemode="normal", tickangle=0, tickformat="", color="white", showspikes=True,
               spikemode="toaxis", spikecolor="red", domain=[0, 1]),  # https://plotly.com/python/reference/layout/xaxis/

    yaxis=dict(title='y axis label', spikemode="toaxis", domain=[0, 1]),  #Identique à xaxis
    font=dict(family="Arial", size=16, color="black"),  #Police globale
    legend=dict(orientation="h", yanchor="bottom", y=1.02, xanchor="right", x=1),  # orientation=h Afficher la légende horizontalement
    newshape=dict(line=dict(color="cyan", width=4, dash="dashdot")),
    # dash='solid', 'dot', 'dash', 'longdash', 'dashdot','longdashdot'

    hovermode='x unified',  # "x", "y", "closest", False, "x unified", "y unified"
    hoverlabel=dict(font=dict(family="Arial", size=20, color="black"), bgcolor="white", bordercolor="black"),
    # paper_bgcolor="#ffffff",  #Spécification de couleur en dehors du tracé
    # plot_bgcolor="#ffffff",  #Spécification de couleur dans le tracé
    # template="plotly_dark",  #Modèle https://plotly.com/python/templates/
    autosize=True,
    showlegend=True, )

fig = dict(data=data, layout=layout)

offline.plot(fig, include_plotlyjs="cdn", auto_open=True, filename='sample plotly.html', config={
    'modeBarButtonsToAdd': ['drawline', 'drawopenpath', 'drawclosedpath', 'drawcircle', 'drawrect', 'eraseshape']}, )

xaxis yaxis Spécifiez le format, la taille et la couleur de la police avec font = dict (family =" Arial ", size = 16, color =" black ")

family="Arial", "Balto", "Courier New", "Droid Sans",, "Droid Serif", "Droid Sans Mono", "Gravitas One", "Old Standard TT", "Open Sans", "Overpass", "PT Sans Narrow", "Raleway", "Times New Roman".

Spécifiez la police de valeur de l'axe avec tickfont = dict (family =" Arial ", size = 12, color =" black ") type =" - ": passage à l'axe des temps ou à l'échelle logarithmique en fonction de la valeur d'entrée

"-" | "linear" | "log" | "date" | "category" | "multicategory" Default: "-"

tick0: Spécifiez la valeur minimale de l'axe dtick: Spécifiez l'intervalle d'échelle de l'axe range = [min, max]: Spécifiez le maximum / minimum de l'axe à afficher ʻAutorange = True`: définit automatiquement la plage en fonction de la valeur donnée, devient False lorsque la plage est saisie

( True | False | "reversed" )

rangemode: normal: la plage de l'axe est déterminée par la valeur d'entrée, tozero: 0 est l'origine, non négatif: non négatif

Type: enumerated , one of ( "normal" | "tozero" | "nonnegative" ) Default: "normal"

tickangle: Angle d'affichage de la valeur de l'axe, la valeur par défaut est" auto " tickformat: Lorsque vous voulez afficher% etc., la valeur par défaut est"" color: spécification de la couleur de l'axe (étiquette et coche) showspikes: Afficher / masquer les pointes (lignes pointillées qui apparaissent lorsque le curseur est proche du tracé) spikemode: changer la façon dont les pics sont affichés

Type: flaglist string. Any combination of "toaxis", "across", "marker" joined with a "+" Examples: "toaxis", "across", "toaxis+across", "toaxis+across+marker" Default: "toaxis"

spikecolor: couleur de pointe domain`: Spécifiez la zone du graphique, par défaut [0, 1], plage 0 ~ 1

legend orientation="h", yanchor="bottom", y=1.02, xanchor="right", x=1 Tournez la légende sur le côté. Alignez le coin inférieur droit avec les coordonnées du graphique y = 1,02, x = 1. Les coordonnées sont (x, y) = (0, 0) en bas à gauche du graphique (partie bleue à l'intérieur de l'axe) et (x, y) = (1, 1) en haut à droite.

hovermode Changer la méthode d'affichage de la valeur lorsque le curseur est rapproché du tracé

"x", "y", "closest", False, "x unified", "y unified"

Autre

paper_bgcolor: Spécification de couleur en dehors du tracé plot_bgcolor: Spécifier la couleur dans le tracé template: Modèle de graphique,` "plotly_dark" ʻest cool https://plotly.com/python/templates/

Axe du temps

La valeur de l'axe des x doit être définie sur time, par exemple datetime

layout = go.Layout(
    title="sample",
    xaxis=dict(title="time", type="date", rangeslider=dict(visible=True), tickformat="%Y/%m/%d %H:%M:%S",
               dtick=86400000.0 / 24),
    yaxis=dict(title='y axis label'),
    font=dict(size=16),
    newshape=dict(line=dict(color="cyan", width=4, dash="solid")),
    hovermode='x unified',
    hoverlabel=dict(font=dict(size=20)),
    autosize=True,
    showlegend=True)

fig = dict(data=data, layout=layout)

offline.plot(fig, include_plotlyjs="cdn", auto_open=True, filename='sample plotly2.html', config={
    'modeBarButtonsToAdd': ['drawline', 'drawopenpath', 'drawclosedpath', 'drawcircle', 'drawrect', 'eraseshape']}, )

type =" date ": passer à l'axe des temps rangelider = dict (visible = True): Ajout d'un curseur sous le graphique pour changer la plage d'affichage du graphique. tickformat: Spécifiez le format d'affichage de l'heure

"%Y/%m/%d %H:%M:%S" = yyyy/mm/dd HH:MM:SS % y correspond aux deux derniers chiffres du calendrier

dtick: Spécifiez l'espacement des axes

"M1" tous les mois-> "M2" tous les deux mois "D1" tous les jours-> "D2" tous les deux jours D'autres sont ajoutés tous les 86400000.0 un jour (60 * 60 * 24 = 86400000 secondes par jour)

glissière

Détails dans un autre article Application du graphique à l'aide du curseur de tracé --Qiita

Site de référence

officiel Plotly Python Graphing Library | Python | Plotly

Référence de l'axe des temps Paramètres d'affichage de l'étiquette de l'axe des dates tracé: blog de showery

Recommended Posts

des modèles de tracé et de mise en page qui sont susceptibles d'être utilisés dans les diagrammes de dispersion
J'ai essayé de résumer les opérations susceptibles d'être utilisées avec numpy-stl
Expressions régulières faciles et solides à apprendre en Python
Téléchargez et gérez les packages qui ne sont pas dans conda sur anaconda.org
Comment définir intelligemment les objets couramment utilisés dans View
Programme d'installation facile et programme de mise à jour automatique pouvant être utilisé dans n'importe quelle langue
Fonctions pouvant être utilisées dans l'instruction for
Une solution au problème que les fichiers contenant [et] ne sont pas répertoriés dans glob.glob ()
Statistiques simples qui peuvent être utilisées pour analyser l'effet des mesures sur les sites EC et les codes qui peuvent être utilisés dans le notebook jupyter
[Nouvel employé étudiant] Récapitulons les commandes Linux susceptibles d'être désormais utilisées pour la construction du réseau
Algorithmes de base utilisables par les pros de la compétition
Enregistrement d'image ANT qui peut être utilisé en 5 minutes
[Python] tkinter Code susceptible d'être réutilisé
[Python] pandas Code susceptible d'être réutilisé
[Django] Noms de champs pouvant être utilisés pour le modèle utilisateur, l'enregistrement des utilisateurs et les méthodes de connexion
[Python3] Code qui peut être utilisé lorsque vous souhaitez redimensionner des images dossier par dossier
Comment définir des variables pouvant être utilisées dans toute l'application Django ~ Utile pour les modèles, etc. ~