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ď č. 1Ak 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:
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}
.