/ / Hladký graf podobný Excelu so správnou legendou v Matlabe - matlab, plot

Hladký graf podobný Excelu so správnou legendou v Matlabu - matlab, graf

Mám niekoľko riedkych údajov a chcem ich vykresliť ako značky spojené hladkou interpolovanou čiarou - ako predvolené správanie programu Microsoft Excel.

Existujú riešenia tohto problému, ktoré sa dajú ľahko nájsťna internete, ale považujem ich za neuspokojivé. Čo robia, je: vykresliť riedke údaje ako jednu množinu údajov, pričom ich vykreslí ako značky bez čiar, interpoluje ich metódou voľby a vykreslí interpoláciu ako druhú skupinu údajov s čiarami bez značiek.

Problém s týmito trikmi je v tom, že v legende budú tieto dva súbory údajov uvedené osobitne. Očakával by som, že jediný súbor údajov zobrazený v legende bude čiara prechádzajúca cez značku.

Je to možné v Matlabe?

odpovede:

4 pre odpoveď č. 1

Ak chcete vykresliť interpolovanú čiaru, existuje veľa spôsobov, ako to urobiť. Môžete skúsiť vygenerovať interpolovanú linku pomocou matlabu interp1() funkcie.

Vytvorme údaje xay bez NaN.

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

Ak chcete mať 1 000 údajových bodov, v ktorých ste predtým mali len niekoľko, je to celkom jednoduché:

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

a môžete vykresliť svoje dáta a spline pomocou

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

Vlastná legenda je jednoduchá, keď používate grafiku rukoväte. Pomocou makety môžete vykresliť figurínu s červenou čiarou prechádzajúcou cez značku

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

Potom môžete pridať legendu, ktorá ukazuje na túto množinu údajov pomocou

legend(h,lstring)

Skončíte s niečím, čo vyzerá zhruba takto:

tu zadajte popis obrázku

Príjemná vec pri používaní grafiky rukoväte (napr h) môžete do legendy zahodiť ľubovoľné série údajov h(end+1) a lstring{end+1}.