GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing plotly.com — Scatterplot matrix in Python Scatter matrix with Plotly Express¶A scatterplot matrix is a matrix associated to n numerical arrays (data variables), $X_1,X_2,…,X_n$ , of the same length. The cell (i,j) of such a matrix displays the scatter plot of the variable Xi versus Xj. Here we show the Plotly Express function Plotly Express is the easy-to-use, high-level interface to Plotly, which operates on a variety of types of data and produces easy-to-style figures. In [1]:
import plotly.express as px df = px.data.iris() fig = px.scatter_matrix(df) fig.show() Specify the columns to be represented with the In [2]:
import plotly.express as px df = px.data.iris() fig = px.scatter_matrix(df, dimensions=["sepal_length", "sepal_width", "petal_length", "petal_width"], color="species") fig.show() Styled Scatter Matrix with Plotly Express¶The scatter matrix plot can be configured thanks to the parameters of In [3]:
import plotly.express as px df = px.data.iris() fig = px.scatter_matrix(df, dimensions=["sepal_length", "sepal_width", "petal_length", "petal_width"], color="species", symbol="species", title="Scatter matrix of iris data set", labels={col:col.replace('_', ' ') for col in df.columns}) # remove underscore fig.update_traces(diagonal_visible=False) fig.show() Scatter matrix (splom) with go.Splom¶If Plotly Express does not provide a good starting point, it is possible to use the more generic The Plotly splom trace implementation for the scatterplot matrix does not require to set $x=Xi$ , and $y=Xj$, for each scatter plot. All arrays, $X_1,X_2,…,X_n$ , are passed once, through a list of dicts called dimensions, i.e. each array/variable represents a dimension. A trace of type
The label in each dimension is assigned to the axes titles of the corresponding matrix cell. Splom of the Iris data set¶In [4]:
import plotly.graph_objects as go import pandas as pd df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/iris-data.csv') # The Iris dataset contains four data variables, sepal length, sepal width, petal length, # petal width, for 150 iris flowers. The flowers are labeled as `Iris-setosa`, # `Iris-versicolor`, `Iris-virginica`. # Define indices corresponding to flower categories, using pandas label encoding index_vals = df['class'].astype('category').cat.codes fig = go.Figure(data=go.Splom( dimensions=[dict(label='sepal length', values=df['sepal length']), dict(label='sepal width', values=df['sepal width']), dict(label='petal length', values=df['petal length']), dict(label='petal width', values=df['petal width'])], text=df['class'], marker=dict(color=index_vals, showscale=False, # colors encode categorical variables line_color='white', line_width=0.5) )) fig.update_layout( title=dict(text='Iris Data set'), dragmode='select', width=600, height=600, hovermode='closest', ) fig.show() The scatter plots on the principal diagonal can be removed by setting In [5]:
import plotly.graph_objects as go import pandas as pd df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/iris-data.csv') index_vals = df['class'].astype('category').cat.codes fig = go.Figure(data=go.Splom( dimensions=[dict(label='sepal length', values=df['sepal length']), dict(label='sepal width', values=df['sepal width']), dict(label='petal length', values=df['petal length']), dict(label='petal width', values=df['petal width'])], diagonal_visible=False, # remove plots on diagonal text=df['class'], marker=dict(color=index_vals, showscale=False, # colors encode categorical variables line_color='white', line_width=0.5) )) fig.update_layout( title=dict(text='Iris Data set'), width=600, height=600, ) fig.show() To plot only the lower/upper half of the splom we switch the default In [6]:
import plotly.graph_objects as go import pandas as pd df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/iris-data.csv') index_vals = df['class'].astype('category').cat.codes fig = go.Figure(data=go.Splom( dimensions=[dict(label='sepal length', values=df['sepal length']), dict(label='sepal width', values=df['sepal width']), dict(label='petal length', values=df['petal length']), dict(label='petal width', values=df['petal width'])], showupperhalf=False, # remove plots on diagonal text=df['class'], marker=dict(color=index_vals, showscale=False, # colors encode categorical variables line_color='white', line_width=0.5) )) fig.update_layout( title=dict(text='Iris Data set'), width=600, height=600, ) fig.show() Each dict in the list dimensions has a key, visible, set by default on True. We can choose to remove a variable from splom, by setting In [7]:
import plotly.graph_objects as go import pandas as pd df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/iris-data.csv') index_vals = df['class'].astype('category').cat.codes fig = go.Figure(data=go.Splom( dimensions=[dict(label='sepal length', values=df['sepal length']), dict(label='sepal width', values=df['sepal width'], visible=False), dict(label='petal length', values=df['petal length']), dict(label='petal width', values=df['petal width'])], text=df['class'], marker=dict(color=index_vals, showscale=False, # colors encode categorical variables line_color='white', line_width=0.5) )) fig.update_layout( title=dict(text='Iris Data set'), width=600, height=600, ) fig.show() Splom for the diabetes dataset¶Diabetes dataset is downloaded from kaggle. It is used to predict the onset of diabetes based on 8 diagnostic measures. The diabetes file contains the diagnostic measures for 768 patients, that are labeled as non-diabetic (Outcome=0), respectively diabetic (Outcome=1). The splom associated to the 8 variables can illustrate the strength of the relationship between pairs of measures for diabetic/nondiabetic patients. In [8]:
import plotly.graph_objects as go import pandas as pd dfd = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/diabetes.csv') textd = ['non-diabetic' if cl==0 else 'diabetic' for cl in dfd['Outcome']] fig = go.Figure(data=go.Splom( dimensions=[dict(label='Pregnancies', values=dfd['Pregnancies']), dict(label='Glucose', values=dfd['Glucose']), dict(label='BloodPressure', values=dfd['BloodPressure']), dict(label='SkinThickness', values=dfd['SkinThickness']), dict(label='Insulin', values=dfd['Insulin']), dict(label='BMI', values=dfd['BMI']), dict(label='DiabPedigreeFun', values=dfd['DiabetesPedigreeFunction']), dict(label='Age', values=dfd['Age'])], marker=dict(color=dfd['Outcome'], size=5, colorscale='Bluered', line=dict(width=0.5, color='rgb(230,230,230)')), text=textd, diagonal=dict(visible=False))) title = "Scatterplot Matrix (SPLOM) for Diabetes Dataset<br>Data source:"+\ " <a href='https://www.kaggle.com/uciml/pima-indians-diabetes-database/data'>[1]</a>" fig.update_layout(title=title, dragmode='select', width=1000, height=1000, hovermode='closest') fig.show() Hover Effects¶New in 5.21 Set In [9]:
import plotly.graph_objects as go import pandas as pd df = pd.read_csv( "https://raw.githubusercontent.com/plotly/datasets/master/iris-data.csv" ) index_vals = df["class"].astype("category").cat.codes fig = go.Figure( data=go.Splom( dimensions=[ dict(label="sepal length", values=df["sepal length"]), dict(label="sepal width", values=df["sepal width"]), dict(label="petal length", values=df["petal length"]), dict(label="petal width", values=df["petal width"]), ], showupperhalf=False, text=df["class"], marker=dict( color=index_vals, showscale=False, line_color="white", line_width=0.5, ), ) ) fig.update_layout( title=dict(text="Iris Data set"), hoversubplots="axis", width=600, height=600, hovermode="x", ) fig.show() Linked Axes¶Changed in 7.0
In [10]:
import plotly.graph_objects as go import pandas as pd df = pd.read_csv( "https://raw.githubusercontent.com/plotly/datasets/master/iris-data.csv" ) fig = go.Figure(go.Splom( dimensions=[ dict(label="sepal length", values=df["sepal length"], axis=dict(matches=False)), dict(label="sepal width", values=df["sepal width"], axis=dict(matches=False)), dict(label="petal length", values=df["petal length"], axis=dict(matches=False)), ], marker=dict(size=4), )) fig.update_layout(title=dict(text="Unlinked axes"), width=600, height=600) fig.show() Reference¶See function reference for What About Dash?¶Dash is an open-source framework for building analytical applications, with no Javascript required, and it is tightly integrated with the Plotly graphing library. Learn about how to install Dash at https://dash.plot.ly/installation. Everywhere in this page that you see import plotly.graph_objects as go # or plotly.express as px fig = go.Figure() # or any Plotly Express function e.g. px.bar(...) # fig.add_trace( ... ) # fig.update_layout( ... ) from dash import Dash, dcc, html app = Dash() app.layout = html.Div([ dcc.Graph(figure=fig) ]) app.run(debug=True, use_reloader=False) # Turn off reloader if inside Jupyter
|
| You are visitor 01402503 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |