/ / Гладкий Excel-подібний сюжет з правильною легендою в Matlab - матлаб, сюжет

Гладкий Excel-подібний сюжет з правильною легендою в Matlab - MATLAB, сюжет

У мене є кілька розріджених даних, і я хочу побудувати їх як маркери, з'єднані гладкою інтерпольованою лінією - як поведінка Microsoft Excel за замовчуванням.

Є рішення цієї проблеми легко знайтив Інтернеті, але я вважаю їх незадовільними. Що вони роблять, це: побудувати розрізнені дані як один набір даних, малюючи їх як маркери без ліній, інтерполювати їх методом вибору та побудувати інтерполяцію як другий набір даних, з рядками без маркерів.

Проблема цих хитрощів полягає в тому, що в легенді два набори даних будуть перераховані окремо. Я б очікував, що єдиний набір даних зображений в легенді як лінія, що перетинає маркер.

Чи можливо це в Matlab?

Відповіді:

4 для відповіді № 1

Якщо ви хочете побудувати інтерпольовану лінію, існує багато способів зробити це. Ви можете спробувати створити інтерпольовану лінію за допомогою matlab interp1() функція.

Нехай "s створює x і y дані без NaN.

x = randn(1,10)
y = randn(1,10)

Якщо вам потрібно 1000 точок даних, де раніше їх було лише кілька, це досить просто:

x2 = min(x):(max(x)-min(x))/1000:max(x)
y2 = interp1(x,y,x2,"cubic")

і ви можете побудувати свої дані та сплайнувати за допомогою

plot(x,y,"r+")
hold on
plot(x2,y2,"r-")

Користувацька легенда є простою, коли ви використовуєте графіку обробки. Ви можете побудувати набір даних фіктивних даних з червоною лінією, що проходить через маркер, використовуючи

h(1) = plot(NaN,NaN,"r-+")
lstring{1} = "Data";

Потім можна додати легенду, яка вказує на цей набір даних, використовуючи

legend(h,lstring)

Ви закінчите щось, що приблизно так:

введіть опис зображення тут

Приємна річ у використанні графіки ручки (тобто h) Ви можете кинути в легенду будь-які серії даних h(end+1) і lstring{end+1}.