plots a paired histogram of the values xi and yi.

PairedHistogram[{x1,x2,},{y1,y2,}, bspec]

plots a paired histogram with bin width specification bspec.


plots a paired histogram with bin heights computed according to the specification hspec.


plots paired histograms for multiple datasets data1i and data2j.

Details and Options

  • PairedHistogram[data1,data2] by default plots a paired histogram with equal bin widths chosen to approximate an assumed underlying smooth distribution of the values xi and yi.
  • Data for PairedHistogram can be given in the following forms:
  • {e1,e2,}list of elements with or without wrappers
    <|k1y1,k2y2,|>association of keys and lengths
    TimeSeries[],EventSeries[],TemporalData[]time series, event series, and temporal data
    WeightedData[],EventData[]augmented datasets
    w[{e1,e2,},]wrapper applied to a whole dataset
    w[{data1,data1,},]wrapper applied to all datasets
  • The following bin width specifications bspec can be given:
  • nuse n bins
    {dx}use bins of width dx
    {xmin,xmax,dx}use bins of width dx from xmin to xmax
    {{b1,b2,}}use the bins [b1,b2),[b2,b3),
    Automaticdetermine bin widths automatically
    "name"use a named binning method
    {"Log",bspec}apply binning bspec on log transformed data
    fbapply fb to get an explicit bin specification {b1,b2,}
  • The binning specification "Log" is taken to use the Automatic underlying binning method.
  • Possible named binning methods include:
  • "Sturges"compute the number of bins based on the length of data
    "Scott"asymptotically minimize the mean square error
    "FreedmanDiaconis"twice the interquartile range divided by the cube root of sample size
    "Knuth"balance likelihood and prior probability of a piecewise uniform model
    "Wand"one-level recursive approximate Wand binning
  • The function fb in PairedHistogram[data1,data2,fb] is applied to a list of all xi and yi and should return an explicit bin list {b1,b2,}.
  • Different forms of histogram can be obtained by giving different bin height specifications hspec in PairedHistogram[data1,data2,bspec,hspec]. The following forms can be used:
  • "Count"number of elements in each bin
    "CumulativeCount"cumulative counts
    "SurvivalCount"survival counts
    "Probability"fraction of values lying in each bin
    "Intensity"count divided by bin width
    "PDF"probability density function
    "CDF"cumulative distribution function
    "SF"survival function
    "HF"hazard function
    "CHF"cumulative hazard function
    {"Log",hspec}log transformed height specification
    fhheights obtained by applying fh to bins and counts
  • The function fh in PairedHistogram[data1,data2,bspec,fh] is applied to two arguments: a list of bins {{b1,b2},{b2,b3},} and corresponding list of counts {c1,c2,}. The function should return a list of heights to be used for each of the ci.
  • Only values xi that are real numbers are assigned to bins; others are taken to be missing.
  • In PairedHistogram[{data11,},{data21,},], automatic bin locations are determined by combining all the datasets data1i and data2j.
  • PairedHistogram[{,wi[datai,],},{,wj[dataj],},] renders the histogram elements associated with dataset datak according to the specification defined by the symbolic wrapper wk.
  • Possible symbolic wrappers are the same as for BarChart and include Style, Labeled, Legended, etc.
  • PairedHistogram has the same options as Graphics, with the following additions and changes:
  • AspectRatio1/GoldenRatiooverall ratio of height to width
    AxesTruewhether to draw axes
    BarOrigin Bottomorigin of histogram bars
    ChartBaseStyle Automaticoverall style for bars
    ChartElementFunction Automatichow to generate raw graphics for bars
    ChartElements Automaticgraphics to use in each of the bars
    ChartLabels Nonecategory labels for datasets
    ChartLayout Automaticoverall layout to use
    ChartLegends Nonelegends for data elements and datasets
    ChartStyle Automaticstyle for bars
    ColorFunction Automatichow to color bars
    ColorFunctionScaling Truewhether to normalize arguments to ColorFunction
    LabelingFunction Automatichow to label elements
    LegendAppearanceAutomaticoverall appearance of legends
    PerformanceGoal $PerformanceGoalaspects of performance to try to optimize
    PlotTheme $PlotThemeoverall theme for the histogram
    ScalingFunctionsNonehow to scale individual coordinates
    TargetUnitsAutomaticunits to display in the chart
  • The following settings for ChartLayout can be used to display multiple sets of data:
  • "Overlapped"show all the data overlapping
    "Stacked"accumulate the data
  • The arguments supplied to ChartElementFunction are the bin region {{xmin,xmax},{ymin,ymax}}, the bin values lists, and metadata {m1,m2,} from each level in a nested list of datasets.
  • A list of built-in settings for ChartElementFunction can be obtained from ChartElementData["PairedHistogram"].
  • The argument supplied to ColorFunction is the height for each bin.
  • With ScalingFunctions->{sx,sy}, the x coordinate is scaled using sx etc.
  • Style and other specifications from options and other constructs in BarChart are effectively applied in the order ChartStyle, ColorFunction, Style and other wrappers, ChartElements, and ChartElementFunction, with later specifications overriding earlier ones.


open allclose all

Basic Examples  (2)

Generate a paired histogram of two datasets:

Plot the probability density function of the datasets:

Cumulative distribution function:

Survival function:

Hazard function:

Cumulative hazard function:

Scope  (23)

Data and Layouts  (11)

Specify the number of bins to use:

Specify the bin width:

The bin delimiters:

The bin delimiters as an explicit list:

Use different automatic binning methods:

Use logarithmically spaced bins:

Delimit bins on integer boundaries using a binning function:

Use different height specifications:

Use a height function that accumulates the bin counts:

Bins associated with a dataset are styled the same:

Numeric values in an association are used as the y coordinates:

Numeric keys and values in an association are used as the x and y coordinates:

The weights in WeightedData are ignored:

Nonreal data is taken to be missing:

Use different layouts to display multiple datasets:

Control the origin of bars:

Wrappers  (2)

Use wrappers on individual data, datasets, or collections of datasets:

Wrappers can be nested:

Override the default tooltips:

Use PopupWindow to provide additional drilldown information:

Button can be used to trigger any action:

Styling and Appearance  (4)

Use an explicit list of styles for the bars:

Use any gradient or indexed color schemes from ColorData:

ChartBaseStyle can be used to set an initial style for all chart elements:

Use built-in programmatically generated bars:

For detailed settings, use Palettes ChartElementSchemes:

Labeling and Legending  (6)

Use symbolic positions to label the datasets:

Provide value labels for bars by using LabelingFunction:

Use Placed to control placement and formatting:

Add categorical legend entries for datasets:

Apply legends at different levels:

Use Placed to affect the positioning of legends:

Options  (44)

BarOrigin  (1)

Change the bar origin:

BarSpacing  (3)

Use automatically determined spacing between paired bars:

Use no spacing:

Use explicit spacing between bar pairs:

ChartBaseStyle  (5)

Use ChartBaseStyle to style bars:

ChartBaseStyle combines with ChartStyle:

ChartBaseStyle combines with Style:

ChartBaseStyle combines with ColorFunction:

ColorFunction may override settings for ChartBaseStyle:

Style may override settings for ChartBaseStyle:

ChartElementFunction  (5)

Get a list of built-in settings for ChartElementFunction:

For detailed settings, use Palettes ChartElementSchemes:

This ChartElementFunction is appropriate to show the global scale:

Write a custom ChartElementFunction:

Built-in element functions may have options; use Palettes ChartElementSchemes to set them:

ChartElements  (8)

Create a pictorial chart based on any Graphics object:



Use a stretched version of the graphic:

Use explicit sizes for width and height:

Without AspectRatio->Full, the original aspect ratio is preserved:

Using All for width or height causes that direction to stretch to the full size of the bar:

Use a different graphic for each side of the chart:

Use a different graphic for each row of data:

Styles are inherited from styles set through ChartStyle etc.:

Explicit styles set in the graphic will override other style settings:

The orientation of the pictorial graphic is unaffected by BarOrigin:

ChartLabels  (3)

By default, labels are placed on top of each bar pair:

Place group labels on each dataset:

Use Placed to control label placement:

ChartLayout  (1)

ChartLayout is overlapped by default:

Stacked layout:

ChartLegends  (2)

Generate a legend based on chart style:

Create legends for each dataset and bar pair:

ChartStyle  (3)

Use ChartStyle to style bars:

Give a list of styles:

Use "Gradient" colors from ColorData:

Use "Indexed" colors from ColorData:

Specify styles for each bar pair:

ColorFunction  (3)

Color by bar height:

Use ColorFunctionScaling->False to get unscaled height values:

ColorFunction overrides styles in ChartStyle:

Use ColorFunction to combine different style effects:

ColorFunctionScaling  (1)

By default, scaled height values are used:

Use ColorFunctionScaling->False to get unscaled height values:

LabelingFunction  (5)

Use automatic labeling by values through Tooltip and StatusArea:

Do no labeling:

Use symbolic positions to control label placement:

Symbolic positions outside the bar:

Use the given chart labels as arguments to the labeling function:

Place complete labels in tooltips:

PerformanceGoal  (3)

Generate a paired bar chart with interactive highlighting:

Emphasize performance by disabling interactive behaviors:

Typically, less memory is required for non-interactive charts:

PlotTheme  (1)

Use a theme with simple ticks and grid lines in a high-contrast color scheme:

Change the color scheme:

Applications  (3)

Compare two different distributions:

Compare temperatures for two cities in 2009:

Compare two time slices for a random process:

Properties & Relations  (5)

PairedBarChart works on lists of heights:

Histogram and SmoothHistogram can be used to visualize single datasets:

Histogram3D and SmoothHistogram3D show bivariate data as surfaces:

DensityHistogram and SmoothDensityHistogram show bivariate data as density plots:

QuantilePlot and ProbabilityPlot compare distributions to each other:

BoxWhiskerChart and DistributionChart work with many datasets:

Wolfram Research (2010), PairedHistogram, Wolfram Language function, (updated 2015).


Wolfram Research (2010), PairedHistogram, Wolfram Language function, (updated 2015).


Wolfram Language. 2010. "PairedHistogram." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2015.


Wolfram Language. (2010). PairedHistogram. Wolfram Language & System Documentation Center. Retrieved from


@misc{reference.wolfram_2022_pairedhistogram, author="Wolfram Research", title="{PairedHistogram}", year="2015", howpublished="\url{}", note=[Accessed: 30-May-2023 ]}


@online{reference.wolfram_2022_pairedhistogram, organization={Wolfram Research}, title={PairedHistogram}, year={2015}, url={}, note=[Accessed: 30-May-2023 ]}