Насколько я понял, то, что вы описываете как «прыгающие вокруг» графики, является причиной автоматически настраиваемых границ 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
Это дает «анимацию» графиков, где вы можете перемещаться и увеличивать масштаб данных, в то время как непрерывные точки добавляются в цикл
Я бы использовал это:
Нет никаких преимуществ.
SQL Server поддерживает только в ORDER BY. В любом другом месте это выражение должно быть оценено.
Часто, когда я запрашиваю таблицу с большим количеством столбцов (в ad-hoc-land только для исследования данных ... Я бы никогда не написал такой код для среды PROD), я делаю что-то подобное, чтобы получить поля Я забочусь о тесном взаимодействии:
select top 1000
Col_1, Col_18, Col_50, Col_117, *
from
TableWithTonsOfCols
order by
1, 4 desc, 3
Если бы я сказал order by Col_1, Col_117 desc, Col_50
, мой запрос был бы сорван, потому что оператор не знал бы, какие столбцы я хотел бы заказать из-за удвоения "*". Не очень часто, но все же полезная функция.
Для меня есть два варианта использования:
CASE
; вместо того, чтобы перепечатывать оператор CASE
для предложения ORDER BY
, я использую порядковый номер, который сохраняет его DRY . Есть способы обойти это, например, используя CTE, подзапросы или представление, но я часто нахожу, что порядковый номер является самым простым решением. Сейчас я склонен использовать встроенные представления:
select col_a, count(*) from
(select case ...... end col_a from ...)
group by col_a
order by col_a;
Но за несколько дней до того, как они стали действительным синтаксисом, это помогло перепечатать полный текст столбца. С хитрыми функциями у вас была возможность расхождения между значением в SELECT и ORDER BY, например
select ltrim(col_name,'0123456789')
from table
order by ltrim(col_name,'123456789')
«0» в SELECT означает, что вы не упорядочиваете по тому, что вы выбрали.
У меня есть алгоритм генерации запроса - SQL генерируется автоматически. Использование порядкового номера означает, что я могу ссылаться на сгенерированное поле без необходимости извлекать имя поля снова. Пользователь может обратиться к имени поля в таблице, выбрав его из списка на экране. Пока я приведу список в соответствие с sql, мне никогда не потребуется знать имена полей, если бы элементы SELECT тоже были порядковыми.
Память говорит, что это было в стандарте SQL в конце 1970-х годов
Если я правильно помню, использование Microsoft в таких выпусках, как вы описали, в будущем выпуске SQL Server не рекомендуется. Я могу ошибаться в этом, но я думаю, что это так. Мне всегда нравилось использовать их в некоторых случаях, потому что это связано с меньшим набором текста, когда вы имеете дело с производными столбцами, которые содержат длинный запрос.