Как обновить сюжет scatter3 (в цикле) в Matlab

Invoke-WebRequest следует за RFC2617, как отметил @briantist, однако есть некоторые системы (например, JFrog Artifactory), которые допускают анонимное использование, если заголовок Authorization отсутствует, но будет отвечать 401 Forbidden, если заголовок содержит недопустимые учетные данные .

Это может быть использовано для запуска ответа 401 Forbidden и получения -Credentials для работы.

$login = Get-Credential -Message "Enter Credentials for Artifactory"

                              #Basic foo:bar
$headers = @{ Authorization = "Basic Zm9vOmJhcg==" }  

Invoke-WebRequest -Credential $login -Headers $headers -Uri "..."

Это первый раз отправит недопустимый заголовок, который будет заменен действительными учетными данными во втором запросе, поскольку -Credentials перекрывает заголовок Authorization.

Проверено с помощью Powershell 5.1

2
задан Jack Hayton 16 January 2019 в 20:20
поделиться

2 ответа

Насколько я понял, то, что вы описываете как «прыгающие вокруг» графики, является причиной автоматически настраиваемых границ x, y, z графика scatter3. Вы можете изменить поведение XLimMode, YLimMode, ZLimMode на manual, чтобы заставить ось оставаться неподвижной. Однако вы должны указать начальные пределы осей.

% Mock data, since you haven't provided a data sample
x = randn(200,50);
y = randn(200,50);
z = randn(200,50);

% Plot first frame before loop
HS = scatter3(x(:,1), y(:,1), z(:,1));
hold on

% Provide initial axes limits (adjust to your data)
xlim([-5,5])
ylim([-5,5])
zlim([-5,5])
% Set 'LimModes' to 'manual' to prevent auto resaling of the plot
set(gca, 'XLimMode', 'manual', 'YLimMode', 'manual', 'ZLimMode', 'manual')

for i=2:len(x,2)
    scatter3(x(:,i), y(:,i), z(:,i))
    pause(1)
end 

Это дает «анимацию» графиков, где вы можете перемещаться и увеличивать масштаб данных, в то время как непрерывные точки добавляются в цикл

0
ответ дан gehbiszumeis 16 January 2019 в 20:20
поделиться

Хитрость заключается в том, чтобы не использовать функции, такие как scatter или plot, в анимации, а вместо этого изменять данные в графике, который уже существует. Эти функции всегда сбрасывают свойства осей, поэтому вы видите сброс представления. При изменении существующего графика оси не затрагиваются.

Функция scatter3 (как и все функции построения графиков) возвращает дескриптор графического объекта, который отображает график. В случае scatter3 этот дескриптор имеет три свойства, представляющие интерес здесь: XData, YData и ZData. Вы можете обновить эти свойства, чтобы изменить расположение точек:

N = 100;
data = randn(N,3) * 40;

h = scatter3(data(:,1),data(:,2),data(:,3));
for ii = 1:500
   data = data + randn(N,3);
   set(h,'XData',data(:,1),'YData',data(:,2),'ZData',data(:,3));
   drawnow
   pause(1/5)
end

Новый data также может быть совершенно другим, ему даже не нужно содержать одинаковое количество точек.

Но при изменении этих трех свойств вы увидите изменение свойств осей XLim, YLim и ZLim. То есть оси будут масштабироваться для размещения всех данных. Если вам нужно это предотвратить, установите для осей XLimMode, YLimMode и ZLimMode значение 'manual':

set(gca,'XLimMode','manual','YLimMode','manual','ZLimMode','manual')

При ручной установке пределов режим ограничения всегда устанавливается на ручной .

0
ответ дан Cris Luengo 16 January 2019 в 20:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: