Skip to content

If boxplot has 1 outlier, jitter moves the point all the way to the left. #2529

Closed
@yniknafs

Description

@yniknafs

Love the boxplot feature, but found a corner case thats been difficult to pin down / debug. I think I've narrowed it down to an internal bug with plotly.

  • If there is only one outlier and jitter is turned on, the outlier point will render all the way in the top left corner of the plot.
  • If there are two outliers, this behavior goes away and the outliers are rendered normally.
  • Interestingly, if "all" is turned on, this bug also goes away.

I'm making a plot that really needs the jitter, and there have been multiple instances with a single outlier.

Here is a codepen recreating the issue, and showing the cases where it goes away:
Codepen

var trace_w_jitter = {
	boxpoints: 'outliers',
	jitter: '0.7',
	marker: {
		opacity: 0.5
	},
	type: 'box',
	x: ["w_jitter", "w_jitter", "w_jitter", "w_jitter", 
"w_jitter", "w_jitter", "w_jitter"],
	y: [46.505,0.143,0.649,0.059, 513,90,234]
}

var trace_w_jitter_all = {
	boxpoints: 'all',
	jitter: '0.7',
	pointpos: 0,
	marker: {
		opacity: 0.5
	},
	type: 'box',
	x: ["trace_w_jitter_all", "trace_w_jitter_all",
 "trace_w_jitter_all", "trace_w_jitter_all",
"trace_w_jitter_all", "trace_w_jitter_all", "trace_w_jitter_all"],
	y: [46.505,0.143,0.649,0.059, 513,90,234]
}

var trace_wo_jitter = {
	boxpoints: 'outliers',
	marker: {
		opacity: 0.5
	},
	type: 'box',
	x: ["wo_jitter", "wo_jitter", "wo_jitter", "wo_jitter", 
"wo_jitter", "wo_jitter", "wo_jitter"],
	y: [46.505,0.143,0.649,0.059, 513,90,234]
}

var trace_w_jitter_multioutlier = {
	boxpoints: 'outliers',
	marker: {
		opacity: 0.5
	},
	jitter: 0.6,
	type: 'box',
	x: ["w_jitter_multioutlier", "w_jitter_multioutlier","w_jitter_multioutlier", 
"w_jitter_multioutlier", "w_jitter_multioutlier", "w_jitter_multioutlier", 
"w_jitter_multioutlier", "w_jitter_multioutlier", "w_jitter_multioutlier", 
"w_jitter_multioutlier", "w_jitter_multioutlier"],
	y: [46.505,0.143,0.649,0.059, 513, 590,90,234,
		0,0,0]
}

var data = [trace_w_jitter, trace_w_jitter_all, trace_w_jitter_multioutlier, trace_wo_jitter, ];

var layout = {
  title: 'Box Plot Styling Outliers'
};

Plotly.newPlot('myDiv', data, layout);

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugsomething broken

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions