单个绘图上的多个 Y 轴 Octave

Multiple Y axes on a single plot Octave

我想做的是创建看起来像这样的东西,

这是我通过使用 Octave pcolor 和 barh 函数创建的,使用 3 个子图,子图 x 轴缩放为看起来好像图形是一个图。但是,这种方法并不令人满意,因为我无法缩放或平移它,如果它实际上是一个图,我就可以做到。

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

关于这个问题的一些背景,我正在尝试创建所谓的市场概况图表,即参见 example here or here

我还在 Octave 邮件列表中交叉发布了这个问题 here

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

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

## 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;

有关 blog post of mine.

的更多详细信息