Skip to main content

spiderplot

Python package to create 2D spider charts.

The spider chart is a type of relational graph y=f(x). The implementation is based on seaborn's lineplot() using a polar coordinate system.

Installation

The package can be installed via pip:

pip install spiderplot

Use the following commands for a quick verification of the installation.

python -c "import spiderplot; print(spiderplot.__version__)"
python -c "import spiderplot; spiderplot.demo_pair()"

Usage

Similar to seaborn functions, spiderplot accepts different data formats:

  • array mode: spiderplot(x=x, y=y)
    with x, y (and other parameters) being sequences
  • long-form mode: spiderplot(x=x, y=y, ..., data=data)
    with data being a DataFrame and the other parameters (x, y, hue, size, extent) being keys of data
  • wide-form mode: spiderplot(data)
    with data being a DataFrame, using the following mapping:
    x are the row indices (data.index)
    y are the table values (data.values) every column of data represents a different category of the plot.

See this tutorial about data structures in seaborn for further details.

To print the help text of the function:

import spiderplot as sp
help(sp.spiderplot)
help(sp.spiderplot_facet)

See the examples for further usage information.

Basic example

import seaborn as sns
import spiderplot as sp
import matplotlib.pyplot as plt
sns.set_style("whitegrid")
# Load some demo data.
df = sp.demo.generate_data(mode="long-form", d=1)
# Create spider plot.
ax = sp.spiderplot(x="x", y="value", hue="dataset", legend=False,
                   data=df, palette="husl", rref=0)
# Adjust limits in radial direction.
ax.set_rlim([-1.4,1.4])
plt.show()

Result of the basic example

Multiple plots

df = sp.demo.generate_data_pair(mode="long-form")
sns.set_style("whitegrid")
ax = sp.spiderplot(x="x", y="value", hue="dataset", style="dataset",
                   data=df, dashes=False, palette="husl", rref=0)
ax.set_rlim([-1.4,1.4])
ax.legend(loc="upper right",
           bbox_to_anchor=(1.4, 1.),
           borderaxespad=0.)
plt.tight_layout()
plt.show()

Stratify multiple datasets

Data aggregation

df = sp.demo.generate_data(mode="long-form", n=24, d=10)
means = df.groupby("x")["value"].mean()
stds = df.groupby("x")["value"].std()
sns.set_style("whitegrid")
ax = sp.spiderplot(y=means, extent=stds, color="red", fillcolor="gray",
                   fill=False, rref=0, label="mean ± std")
ax.set_rlim([-1.4,1.4])
ax.legend(loc="upper right",
           bbox_to_anchor=(1.4, 1.),
           borderaxespad=0.)
plt.tight_layout()
plt.show()

Aggregate multiple datasets

Requirements

Python>=3.6
numpy
pandas>=0.22
matplotlib>=3.0
seaborn>=0.9

Project setup

git clone https://github.com/hirsch-lab/spider-chart.git
cd spider-chart
pip install -r requirements.txt
# Run examples
./examples/run_all.py
# Build package
python setup.py sdist bdist_wheel

Metadata

Release files for spiderplot 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for spiderplot 0.1.2
File Size Uploaded
spiderplot-0.1.2.tar.gz 24.3 MB Details

Release files / spiderplot-0.1.2.tar.gz

Download URL spiderplot-0.1.2.tar.gz
Size 24.3 MB
Tags Source
SHA-256 checksum
How to use checksums
772cc3920ac23e23e7caf1f9fa35fa64fe08d9879757950e80a69bc686521852
BLAKE2b-256 checksum
How to use checksums
a5cd5e91772fa0f3ad30808c0e2ed0af862821157963c20463c129a7ea81159f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.10.5

Release history Release notifications | RSS feed

This release

0.1.2 This release

1 release file

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page