首页 > 解决方案 > 单个图上的多个 Y 轴

问题描述

我想做的是创造一些看起来像这样的东西,

阴谋

我通过使用 Octave pcolor 和 barh 函数创建的,使用 3 个子图,子图 x 轴按比例缩放,看起来好像该图是一个图。但是,这种方法不能令人满意,因为我无法缩放或平移它,如果它实际上是一个情节,我将能够做到这一点。

如何使用 pcolor 绘制一个背景图,然后在沿 x 轴的不同点添加多个 y 轴以使用 barh 绘制水平直方图?

对于这个问题的一些背景,我正在尝试创建所谓的市场概况图表,即参见此处此处的示例。

我还在这里的 Octave 邮件列表上交叉发布了这个问题。

标签: plothistogramoctaveaxes

解决方案


我找到了一种方法来做我想做的事。除了使用 barh 函数,还可以使用 fill 函数。

下面给出了一个最小的、可重现的例子。

## create y and x axes for chart
y_max = max( high_round ) + max_tick_range * tick_size ;
y_min = min( low_round ) - max_tick_range * tick_size ;
y_ax = ( y_min : tick_size : y_max )' ;
end_x_ax_freespace = 5 ;

x_ax = ( 1 : 1 : numel( open ) + end_x_ax_freespace )' ;
colormap( 'viridis' ) ; pcolor( x_ax , y_ax , vp_z' ) ; shading interp ; axis tight ;

## plot the individual volume profiles
hold on ;
scale_factor = 0.18 ; 
fill( vp( 1 , : ) .* scale_factor , y_ax' , [99;99;99]./255 ) ; 
fill( vp( 2 , : ) .* scale_factor .+ 50 , y_ax' , [99;99;99]./255 ) ;
fill( vp( 3 , : ) .* scale_factor .+ 100 , y_ax' , [99;99;99]./255 ) ;

hold off;

更多细节在我的一篇博文中。


推荐阅读