Увеличенные / уменьшенные участки в пределах участков в Matlab - PullRequest
0 голосов
/ 11 июля 2011

Я столкнулся с некоторой ошибкой, пытаясь построить некоторые данные так, как я хочу - любой совет будет принят с благодарностью.

left и right - векторы несколькихдлиной в сто тысяч, полученной в другом месте.Код ниже показывает left, дважды - второй график лежит сверху первого, примерно в направлении одного угла.

ax1 = axes;
plot(ax1, left, 'b');
set(ax1, 'xlim', [7.075*10^4 7.5*10^4]);
set(ax1, 'ylim', [-0.02 0.02]);

ax2 = axes('Position', get(ax1,'Position'), 'XAxisLocation', 'top', 'YAxisLocation', 'right', 'Color', 'none', 'XColor', 'k', 'YColor', 'k', 'NextPlot', 'add');
plot(ax2, left, 'b');
set(ax2, 'Units', 'normalized', 'Position', [0.6 0.60 0.25 0.25]);

Я хотел бы сделать то же самое для right, а затем отобразите каждую пару графиков в качестве вспомогательного участка с двумя соседними участками рядом.Я попытался адаптировать способ, описанный выше, для использования субплота, но, очевидно, я делаю что-то не так, поскольку продолжаю обнулять содержимое каждого субплана и получаю два пустых субплота.Можно ли предотвратить прозрачный фон на меньшем врезанном графике?

Ответы [ 2 ]

3 голосов
/ 11 июля 2011

Рассмотрим следующий пример:

%# sample data
x = 1:100;
left = randn(100,1);
right = cumsum(rand(100,1)-0.5);

%# build axes positions
hBig = [subplot(121) subplot(122)];         %# create subplots
posBig = get(hBig, 'Position');             %# record their positions
delete(hBig)                                %# delete them
posSmall{1} = [0.275 0.63 0.16 0.24];
posSmall{2} = [0.717 0.63 0.16 0.24];

%# create axes (big/small)
hAxB(1) = axes('Position',posBig{1});
hAxB(2) = axes('Position',posBig{2});
hAxS(1) = axes('Position',posSmall{1});
hAxS(2) = axes('Position',posSmall{2});

%# plot
plot(hAxB(1), x, left, 'b');
plot(hAxB(2), x, right, 'b');
plot(hAxS(1), x, left, 'r');
plot(hAxS(2), x, right, 'r');

%# set axes properties
set(hAxB, 'XLim',[1 100], 'YLim',[-10 10]);
set(hAxS , 'Color','none', 'XAxisLocation','top', 'YAxisLocation','right');

screenshot

Если вы хотите, чтобы цвет фона меньших осей был непрозрачным, просто установите их цвета на белый:

set(hAxS , 'Color','w')
1 голос
/ 11 июля 2011

Чтобы изменить фон, используйте (для красного фона)

set(ax2,'color',[1 0 0])

Что касается подзаговора, если вы разместите код, который не работает, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...