joyplot (ridgeline plot | 山脊图)

Draw joyplot (ridgeline plot) with rug marks, median lines, quantiles, and 5 ColorModes options.

現在この提出コンテンツをフォロー中です。

Cover
Draw joyplot (ridgeline plot) with rug marks, median lines, quantiles, and 5 ColorModes options.
  • 'Order' - Uniform color per ridge (cycles through color list)
  • 'X' - Gradient based on X position within each ridge (local)
  • 'GlobalX' - Gradient based on global X position across all ridges
  • 'Kdensity' - Gradient based on kernel density height (Y value)
  • 'Qt' - Discrete colors based on quantile intervals
Basic usage
We expect Data in the following format:
Data = {X1, X2, X3, ...}
, where each Xi is a numeric vector. The Xi vectors may have different lengths.
figure()
% Create joyplot object and draw.
JP = joyPlot(Data, 'ColorMode','Order');
JP = JP.draw();
% Create handles for legend and display.
lgdHdl = JP.getLegendHdl();
legend(lgdHdl)
%% Change color
figure()
% Create joyplot object, change color and draw.
JP = joyPlot(Data, 'ColorMode','Order');
JP.ColorList = [.88 .57 .26; 1.0 .66 0.0; .83 .43 .06;
.29 .64 .61; .41 .72 .98; .34 .63 .97;
.29 .56 .96; .35 .49 .79; .41 .42 .62];
JP = JP.draw();
% Create handles for legend and display.
lgdHdl = JP.getLegendHdl();
legend(lgdHdl)
%% larger ridge separation
figure()
% Create joyplot object with larger ridge separation and draw.
JP = joyPlot(Data, 'ColorMode','Order', 'Sep', 1/5);
JP = JP.draw();
% Create handles for legend and display.
lgdHdl = JP.getLegendHdl();
legend(lgdHdl)
ColorMode : 'X' and 'GlobalX', with midline
%% ColorMode : 'X'
figure()
% Create joyplot object with 'X' ColorMode and median line.
JP = joyPlot(Data, 'ColorMode','X', 'MedLine','on');
% JP.ColorList = pink(20); % Change colormap.
JP.draw();
colorbar()
%% ColorMode : 'GlobalX
figure()
% Create joyplot object with 'GlobalX' ColorMode and median line.
JP = joyPlot(Data, 'ColorMode','GlobalX', 'MedLine','on');
% JP.ColorList = pink(20); % Change colormap.
JP.draw();
colorbar()
ColorMode : 'Kdensity' with midline and vertical scatter points(rug)
% Create joyplot object with 'Kdensity' ColorMode and vertical scatter points.
JP = joyPlot(Data, 'ColorMode','Kdensity', 'Scatter','on');
JP = JP.draw();
colorbar()
% Another way of changing colors/colormap.
JP.setPatchColor(pink);
ColorMode : 'Qt' with custom quantile boundaries
%% demo 4 - 1 : Quantile coloring with 3 intervals (IQR: 25%-75%)
figure()
JP = joyPlot(Data, 'ColorMode','Qt', 'MedLine','on', 'Quantiles',[.25,.75], 'QtLine','on');
JP = JP.draw();
% Create handles for legend and display.
lgdHdl = JP.getLegendHdl();
legend(lgdHdl, {'Low', 'Mid', 'High'})
%% demo 4 - 2 : Quantile coloring with 5 intervals (10%, 25%, 75%, 90%)
figure()
JP = joyPlot(Data, 'ColorMode','Qt', 'MedLine','on', 'Quantiles',[.1,.25,.75,.9], 'QtLine','on');
JP = JP.draw();
% Create handles for legend and display.
lgdHdl = JP.getLegendHdl();
legend(lgdHdl, {'0~0.1','0.1~0.25','0.25~0.75','0.75~0.9','0.9~1'})
% Change colors/colormap.
JP.setPatchColor(bone(6));
% JP.setPatchColor(turbo(6));
Properties seting
JP = joyPlot(Data, 'MedLine','on', 'Quantiles',[.1,.9], 'QtLine','on', 'Scatter','on');
JP = JP.draw();
% Customize appearance for each ridge.
for i = 1:length(Data)
JP.setRidgePatch(i, 'FaceColor', [0.8, 0.8, 1], 'FaceAlpha', 0.9)
JP.setRidgeLine(i, 'LineWidth', 2, 'Color', [0.4, 0.4, 1])
JP.setScatter(i, 'Color', [0.8, 0.8, 1, 0.7])
JP.setMedLine(i, 'Color', [0.4, 0.4, 1], 'LineWidth', 5, 'LineStyle', '-')
JP.setQtLine(i, 'Color', [0.4, 0.4, 1])
end
Two groups of joyplot drawn in the same axes for comparison
Data = load("demoData2.mat");
Data1 = Data.Data1;
Data2 = Data.Data2;
%% Plot Group 1 and Group 2
JP1 = joyPlot(Data1, 'ColorMode','Order', 'ColorList',[12,165,154]./255, 'MedLine','on', 'Scatter','on');
JP1 = JP1.draw();
JP2 = joyPlot(Data2, 'ColorMode','Order', 'ColorList',[151,220,71]./255, 'MedLine','on', 'Scatter','on');
JP2 = JP2.draw();
%% Change the colors of medlines.
for i = 1:length(Data1)
JP1.setMedLine(i, 'Color',[12,165,154]./255)
end
for i = 1:length(Data2)
JP2.setMedLine(i, 'Color',[151,220,71]./255)
end
%% Get legend handles (one dummy patch per group) and show legend.
lgdHdl1 = JP1.getLegendHdl();
lgdHdl2 = JP2.getLegendHdl();
legend([lgdHdl1(1), lgdHdl2(1)], {'AAAAA', 'BBBBB'})

引用

Zhaoxu Liu / slandarer (2026). joyplot (ridgeline plot | 山脊图) (https://jp.mathworks.com/matlabcentral/fileexchange/125255-joyplot-ridgeline-plot), MATLAB Central File Exchange. に取得済み.

一般的な情報

MATLAB リリースの互換性

  • すべてのリリースと互換性あり

プラットフォームの互換性

  • Windows
  • macOS
  • Linux
バージョン 公開済み リリース ノート Action
2.0.1

Debug

2.0.0

English support

1.5.0

Use the surf function instead of the fill function to solve the problem of rendering errors caused by the large proportion of vertical directions between cells

1.0.0