| | import plotly.graph_objects as go |
| | import numpy as np |
| | import pandas as pd |
| |
|
| | data = { |
| | "x": 3*np.random.rand(512), |
| | "y": np.random.rand(512), |
| | "z": np.random.random(512), |
| | } |
| |
|
| | df = pd.DataFrame(data) |
| |
|
| | def get_label(z): |
| | if z<0.25: |
| | return "smol dot" |
| | if z<0.5: |
| | return "ok-ish dot" |
| | if z<0.75: |
| | return "a dot" |
| | else: |
| | return "biiig dot" |
| |
|
| | df["label"] = df["z"].apply(get_label) |
| |
|
| | df["z"] = (df["z"]+1)*5 |
| |
|
| | fig = go.Figure() |
| |
|
| | fig.add_trace(go.Scatter( |
| | x=df['x'], |
| | y=df['y'], |
| | mode='markers', |
| | marker=dict( |
| | size=df['z'], |
| | color=df['z'], |
| | colorscale=[ |
| | [0, 'rgb(78, 165, 183)'], |
| | [0.5, 'rgb(206, 192, 250)'], |
| | [1, 'rgb(232, 137, 171)'] |
| | ], |
| | opacity=0.9, |
| | ), |
| | customdata=df[["label"]], |
| | hovertemplate="Dot category: %{customdata[0]}", |
| | hoverlabel=dict(namelength=0), |
| | showlegend=False |
| | )) |
| |
|
| |
|
| | fig.update_layout( |
| | width=1200, |
| | height=400, |
| | paper_bgcolor='white', |
| | plot_bgcolor='white', |
| | showlegend=False, |
| | margin=dict(l=0, r=0, t=0, b=0), |
| | xaxis=dict( |
| | showgrid=False, |
| | zeroline=False, |
| | showticklabels=False, |
| | range=[0, 3] |
| | ), |
| | yaxis=dict( |
| | showgrid=False, |
| | zeroline=False, |
| | showticklabels=False, |
| | scaleanchor="x", |
| | scaleratio=1, |
| | range=[0, 1] |
| | ) |
| | ) |
| |
|
| | fig.show() |
| |
|
| | fig.write_html("fragments/banner.html", |
| | include_plotlyjs=False, |
| | full_html=False, |
| | config={ |
| | 'displayModeBar': False, |
| | 'responsive': True, |
| | 'scrollZoom': False, |
| | }) |