Menu

PHARMACOLOGY & TOXICOLOGY

Dose-Response Curve Generator

Generate sigmoidal IC50 curves with confidence intervals and Hill equation fitting used in drug discovery and toxicology - from single compounds to multi-compound batch comparisons.

Essential Dose-Response Visualizations

Dose-response relationships underpin drug discovery, toxicology, and receptor pharmacology. The 4-parameter logistic model captures the full sigmoidal curve and extracts IC50, EC50, Hill coefficient, and Emax - quantities that appear in every compound report.

Sigmoidal IC50

4PL Hill equation fit with IC50 annotation on log scale - the standard for drug potency reporting

Multi-Compound

Overlaid curves for 3-6 compounds with IC50 table for direct potency comparison

Confidence Bands

Bootstrap or parametric 95% CI around the fitted curve to show estimation uncertainty

EC50 Shift

Compare full and inhibited Hill curves to calculate Emax ratio and quantify antagonism

Replicate Scatter

Plot individual replicates behind the mean curve for transparent data reporting

Relative Efficacy

Normalized 0-100% curves comparing partial and full agonists at matched receptor systems

Why Pharmacologists Use Plotivy

Automated IC50 Extraction

scipy.optimize.curve_fit fits the 4PL model and extracts IC50 with error bound automatically - no manual parameter tuning.

Log-Scale Detection

Detects concentration data and auto-switches to log x-axis with correct tick formatting for concentration spanning multiple orders of magnitude.

Multi-Compound Batching

Upload a wide-format CSV and get one curve per compound column automatically with a consistent color palette and IC50 legend.

Conference-Ready Quality

Single-command 300 DPI export at exact journal column width with Arial font - no post-processing in Illustrator needed.

IC50 Fitting with Hill Equation

Fits a 4-parameter logistic Hill equation to simulated replicate data. IC50 is extracted from the fit and annotated directly on the plot with a dashed marker line.

Live Code Editor
Code EditorPython
Loading editor...
Live Preview

Preparing preview

Running once automatically on first load

Learn by Experimenting

This is a safe playground for learning! Try changing:

  • • Colors: Modify color values to see different palettes
  • • Numbers: Adjust sizes, positions, or data ranges
  • • Labels: Update titles, axis names, or legends

Edit the code, run it, then open the full data visualization tool to continue with your own dataset.

Multi-Compound IC50 Comparison

Four compounds are fit simultaneously using the same 4PL model. IC50 values appear in the legend and are marked on each curve at the 50% viability intercept - the standard visual presentation in drug discovery screening reports.

Live Code Editor
Code EditorPython
Loading editor...
Live Preview

Preparing preview

Running once automatically on first load

Learn by Experimenting

This is a safe playground for learning! Try changing:

  • • Colors: Modify color values to see different palettes
  • • Numbers: Adjust sizes, positions, or data ranges
  • • Labels: Update titles, axis names, or legends

Edit the code, run it, then open the full data visualization tool to continue with your own dataset.

Chart gallery

Explore Related Chart Types

Interactive examples with ready-to-run code

Browse all chart types →
Violin plot comparing score distributions across 3 groups with inner box plots
Distribution•seaborn, matplotlib
From the chart gallery•Comparing treatment effects across groups

Violin Plot

Combines box plots with kernel density to show distribution shape across groups.

Sample code / prompt

import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np
from scipy.stats import f_oneway

# Generate exam score data for 3 groups
np.random.seed(42)
control = np.random.normal(72, 12, 50)
treatment_a = np.random.normal(78, 10, 50)
Correlation heatmap with diverging color scale and coefficient annotations
Statistical•seaborn, matplotlib
From the chart gallery•Correlation analysis between variables

Heatmap

Represents data values as colors in a two-dimensional matrix format.

Sample code / prompt

import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np

# Create correlation matrix for financial metrics
metrics = ['Revenue', 'Profit', 'Expenses', 'ROI', 'Customers', 'AOV', 'Marketing', 'Employees']
correlation_data = np.array([
    [1.00, 0.85, -0.45, 0.72, 0.88, 0.65, 0.72, 0.55],
    [0.85, 1.00, -0.78, 0.92, 0.75, 0.58, 0.63, 0.48],

Ready to Generate Your IC50 Curve?

Upload your concentration-response CSV, describe the compounds you want to compare, and get publication-ready dose-response figures with full Python code in seconds.

Start Free - No Sign-Up