How to Make a Violin Plot in Excel (And Why You Shouldn't)

Need to create a violin plot in Excel? You've probably discovered Excel doesn't have a built-in violin chart type. Here's the workaround—and a much faster alternative.
⚡ Skip the Excel Headache
Create a publication-ready violin plot in 30 seconds. No formulas, no workarounds.
Create Violin Plot Free →Can You Make a Violin Plot in Excel?
Technically yes, but Excel doesn't support violin plots natively. You'll need to:
- Calculate kernel density estimation (KDE) manually
- Create mirrored data series
- Use stacked area charts as a workaround
- Spend 30+ minutes formatting
How to Make a Violin Plot in Excel (Step-by-Step)
Step 1: Calculate the Kernel Density Estimation (KDE)
This is where most people give up. Excel doesn't have a KDE function. You'll need to:
- Create bins for your data range (e.g., 20-30 bins spanning your min to max values)
- Use the
FREQUENCYarray formula to count data points in each bin - Apply a Gaussian smoothing formula manually, or approximate with a moving average
Step 2: Create Mirrored Series
To get the symmetric "violin" shape:
- Right Side: The positive calculated density values
- Left Side: The negative of those values (multiply by -1)
Step 3: Create a Stacked Area Chart
Insert a "Stacked Area Chart" and add your positive and negative series. You should see a shape that vaguely resembles a violin.
Step 4: Rotate and Format
Most violin plots are vertical, but Excel's area charts are horizontal. You'll need to:
- Swap your axes (or use an XY Scatter chart with filled curves)
- Remove gridlines and axis labels
- Manually overlay a box plot for summary statistics
- Spend another 20+ minutes on formatting
⚠️ Reality Check
This process typically takes 1-2 hours, the result often doesn't look publication-ready, and if your data changes, you have to start over. There's a better way.
The Plotivy Way: Violin Plot in 30 Seconds
Here's how to create an Excel violin plot alternative that's actually publication-ready:
3 Simple Steps:
- Upload your Excel file directly to Plotivy (or paste your data)
- Type: "Make a violin plot comparing Column A by Group Column B"
- Download your publication-ready figure (PNG, SVG, or PDF at 300 DPI)
Plotivy uses Python's seaborn library under the hood, which performs mathematically accurate Kernel Density Estimations automatically. You get:
- ✅ Accurate statistical representation
- ✅ Embedded box plots showing quartiles and outliers
- ✅ Publication-ready styling (Nature, Science, Cell compliant)
- ✅ Easy customization through natural language
Ready to save 2 hours?
Create a real violin plot in 30 seconds. Free, no signup required.
Make Violin Plot Now →Why Use Violin Plots at All?
Violin plots show the full distribution shape of your data—something box plots hide. They're essential when:
- Your data might be bimodal (two peaks)
- You're comparing distributions between groups
- Reviewers expect to see the data distribution, not just summary statistics
Learn more: What is a Violin Plot and When Should You Use It?
Chart gallery
Gallery starters for distribution plots
One-click prompts and images for violin, box, and density plots you can regenerate instantly.

Violin Plot
Combines box plots with kernel density to show distribution shape across groups.
Sample code / prompt
Create a violin plot comparing 'Exam Scores' across 3 treatment groups: Control, Treatment A, and Treatment B. Generate realistic educational data with 50 students per group. Control: mean=72, sd=12 (normal). Treatment A: mean=78, sd=10 (slight improvement). Treatment B: mean=82, sd=8 (significant improvement, less variance). Include embedded box plots showing quartiles, median line, and mean diamond marker. Add individual data points as a strip plot with jitter (alpha=0.3). Perform and annotate ANOVA p-value. Use distinct colors for each group. Add horizontal reference line at passing score (70). Title: 'Effect of Study Interventions on Exam Performance'..png&w=1920&q=75)
Box and Whisker Plot
Displays data distribution using quartiles, median, and outliers in a standardized format.
Sample code / prompt
Create a publication-ready box plot comparing 'Gene Expression Levels' (normalized counts) across 4 genotypes: WT (Wild Type), KO1 (Knockout 1), KO2 (Knockout 2), and Mutant. Generate a realistic dataset with n=20 biological replicates per group, with KO1 showing upregulation (~1.5x WT), KO2 showing downregulation (~0.8x WT), and Mutant showing moderate increase (~1.2x WT). Overlay jittered individual data points with transparency. Perform pairwise t-tests against WT control and add significance brackets with stars (* p<0.05, ** p<0.01, *** p<0.001, ns for non-significant). Use a colorblind-friendly palette, add y-axis label with units, and include sample size (n=) in x-axis labels..png&w=1920&q=75)
Density Plot
Visualizes the distribution of data over a continuous interval using kernel density estimation.
Sample code / prompt
Create a density plot (KDE) showing the distribution of 'SAT Scores' for 1000 students across 3 school districts. Generate realistic data: District A (urban, mean=1100, sd=150), District B (suburban, mean=1200, sd=120), District C (private, mean=1300, sd=100). Shade the area under each curve with semi-transparent fills using distinct colors. Add vertical dashed lines for each district's mean with annotations. Include a vertical line at the national average (1060). Add a rug plot showing individual observations (alpha=0.1). X-axis: 'SAT Score (400-1600)', Y-axis: 'Density'. Add legend with district names and sample sizes. Title: 'SAT Score Distribution by School District'.Start Analyzing Today
You don't need to be a data scientist to analyze data like one. Try Plotivy and turn your data into insights in minutes.
Get Started for Free →