Faceted Scatter Plot

Drug Response by Cancer Type

Faceted regression showing dose-response relationships across tumor categories

Output
Drug Response by Cancer Type
Python
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np

np.random.seed(42)

# Oncology data
cancer_types = ['Breast', 'Lung', 'Colon', 'Melanoma']
data = []
for cancer in cancer_types:
    n = 40
    dose = np.random.uniform(0.1, 10, n)
    base_response = {'Breast': 0.8, 'Lung': 0.6, 'Colon': 0.7, 'Melanoma': 0.5}[cancer]
    response = base_response * np.log(dose + 1) + np.random.normal(0, 0.15, n)
    for d, r in zip(dose, response):
        data.append({'Dose (mg/kg)': d, 'Tumor Reduction': r, 'Cancer Type': cancer})

df = pd.DataFrame(data)

# Dark theme
plt.style.use('dark_background')
sns.set_style("darkgrid", {
    'axes.facecolor': '#0a0a0f',
    'figure.facecolor': '#0a0a0f',
    'grid.color': '#333333',
    'axes.edgecolor': '#333333',
    'axes.labelcolor': 'white',
    'text.color': 'white',
    'xtick.color': '#888888',
    'ytick.color': '#888888'
})

palette = ['#F5276C', '#27D3F5', '#6CF527', '#F5B027']

g = sns.lmplot(
    data=df,
    x='Dose (mg/kg)',
    y='Tumor Reduction',
    hue='Cancer Type',
    col='Cancer Type',
    col_wrap=2,
    height=3.5,
    aspect=1.2,
    palette=palette,
    scatter_kws={'alpha': 0.7, 's': 50, 'edgecolor': 'white', 'linewidths': 0.5},
    line_kws={'linewidth': 2.5},
    ci=95,
    facet_kws={'sharey': True, 'sharex': True}
)

g.fig.set_facecolor('#0a0a0f')
for ax in g.axes.flat:
    ax.set_facecolor('#0a0a0f')
    for spine in ax.spines.values():
        spine.set_color('#333333')

g.fig.suptitle('Drug Efficacy by Tumor Type', fontsize=14, fontweight='bold', color='white', y=1.02)
plt.tight_layout()
plt.show()
Library

Matplotlib

Category

Pairwise Data

Did this help you?

Support PyLucid to keep it free & growing

Support