Mathematica - legenda

O matematiki, številih, množicah in računih...
Odgovori
Uporabniški avatar
fogl
Prispevkov: 546
Pridružen: 7.11.2004 20:25
Kraj: Radovljica

Mathematica - legenda

Odgovor Napisal/-a fogl »

Narisal sem graf z dvema krivuljama, sedaj pa bi jih rad označil. Gledal sem opcijo PlotLegends, pa za Plot funkcijo dela, za ListPlot (to kar rabim) pa ne. Javi mi "Unknown option PlotLegend in ListPlot" (PlotLegends` sem dodal). Je moče še kaka druga opcija da označim krivulje na grafu?

Popotnik
Prispevkov: 532
Pridružen: 12.11.2008 18:35

Re: Mathematica - legenda

Odgovor Napisal/-a Popotnik »

Ali ti sample, ki ga lahko skopiraš s povezave, ki si jo dodal, dela?

Uporabniški avatar
fogl
Prispevkov: 546
Pridružen: 7.11.2004 20:25
Kraj: Radovljica

Re: Mathematica - legenda

Odgovor Napisal/-a fogl »

Prvi ja, drugi pa ne. Rabim pa drugega (ListPlot).

Popotnik
Prispevkov: 532
Pridružen: 12.11.2008 18:35

Re: Mathematica - legenda

Odgovor Napisal/-a Popotnik »

Katero različico Mathematice pa uporabljaš?

Uporabniški avatar
fogl
Prispevkov: 546
Pridružen: 7.11.2004 20:25
Kraj: Radovljica

Re: Mathematica - legenda

Odgovor Napisal/-a fogl »

6, a tebi deluje?

Popotnik
Prispevkov: 532
Pridružen: 12.11.2008 18:35

Re: Mathematica - legenda

Odgovor Napisal/-a Popotnik »

Uporabljam 7, deluje pri obeh primerih.

Uporabniški avatar
fogl
Prispevkov: 546
Pridružen: 7.11.2004 20:25
Kraj: Radovljica

Re: Mathematica - legenda

Odgovor Napisal/-a fogl »

Hvala, bom posodobil program.

Uporabniški avatar
fogl
Prispevkov: 546
Pridružen: 7.11.2004 20:25
Kraj: Radovljica

Re: Mathematica - legenda

Odgovor Napisal/-a fogl »

Bom kar tukaj nadaljeval... Rad bi narisal graf s funkcijo Plot. Grafu bi rad narisal okvir (Frame -> True), ampak brez številk - samo črtice za razdelke bi rad. Mogoče kdo ve kako to lahko naredim (v helpu mi ni uspelo najti)?

Uporabniški avatar
Aniviller
Prispevkov: 7263
Pridružen: 15.11.2004 18:16

Re: Mathematica - legenda

Odgovor Napisal/-a Aniviller »

Bojim se da ni lepe resitve in moras podat kar polozaje crtic z eksplicitno podano prazno oznako (kar pa pomeni da nimas vec avtomatskega pozicioniranja oznak - lahko seveda napises funkcijo ki jih dela ampak se vedno ni cisto avtomatsko). Da se bolj profesionalno naredit ampak to bi zahtevalo resne akrobacije.
Cudno je da ni neke lepe komande za to stvar (ali je pa zelo zelo skrita).

Tale primer pove vse (za x os po svoje - malo tega, malo drugega, za y os recimo pa avtomatsko):

Koda: Izberi vse

Plot[Sin[x], {x, -10, 10}, Frame -> True, FrameTicks -> {{{-3, ""}, {2, ""}, {7, "lol"},9}, Automatic}]

Uporabniški avatar
fogl
Prispevkov: 546
Pridružen: 7.11.2004 20:25
Kraj: Radovljica

Re: Mathematica - legenda

Odgovor Napisal/-a fogl »

Hvala, sem rešil kot si predlagal.

Sedaj imam pa še en majhen problemček... imam nek graf, na katerega sem s pomočjo orodij za risanje (najdeš jih lahko pod Graphics -> DrawingTools) narisal puščice, tekst, in še nekaj stvari. Problem je, da če popravim začetne podatke, in želim nov graf, mi nariše spet prazen graf in moram zopet vse na novo risat, kar je kar nadležno. Skopirat iz enega grafa na drugega pa se ne da/ne znam. Mogoče kdo ve kako bi lahko obdržal moje risanje po grafu in spreminjal samo graf?

Uporabniški avatar
Aniviller
Prispevkov: 7263
Pridružen: 15.11.2004 18:16

Re: Mathematica - legenda

Odgovor Napisal/-a Aniviller »

Da ugotovis strukturo objekta Graphics in Plot lahko uporabis na tej grafiki FullForm[]. To ti da precej solate... vendar je notri tudi tvoje risanje.
Najlazje bo, ce oznacis celico s sliko, pred njo vpises graph= ali nekaj podobnega, da bo to popravljeno sliko dalo v spremeljivko.

FullForm[] ti da celotno vsebino objekta. Recimo na enostavnem plotu sinusa dobim

Koda: Izberi vse

Graphics[
List[List[List[],List[],List[Hue[0.67`,0.6`,0.6`],

Line[List[List[-0.9999999591836735`,-0.8414709627547404`],blabla,List[0.9807799968889162`,0.8309315936661767`],
List[0.9835257057881672`,0.8324561022550067`],List[0.9890171235866693`,0.8354862805453895`],List[0.989703550811482`,0.8358632832031175`],
List[0.9903899780362948`,0.8362398920168475`],List[0.9917628324859202`,0.8369919274026932`],List[0.9945085413851713`,0.83849126425099`],
List[0.9951949686099841`,0.8388651111984968`],List[0.9958813958347968`,0.8392385628875972`],List[0.9972542502844224`,0.8399842797869103`],
List[0.9979406775092352`,0.8403565446457543`],List[0.9986271047340479`,0.8407284135434548`],List[0.9993135319588606`,0.841099886304794`],
List[0.9999999591836735`,0.8414709627547404`]]]]],

Line[List[List[-0.5494172160122285`,0.5984738204000678`],List[-0.06372408522021544`,0.17620743298227315`],
List[0.7672207891468432`,0.34352052988366344`],List[0.5916690551256336`,-0.3735355996937235`],
List[0.5565587083213919`,-0.5328814062664764`]]]

],

Rule[AspectRatio,Power[GoldenRatio,-1]],Rule[Axes,True],Rule[AxesOrigin,List[0,0]],Rule[PlotRange,List[List[-1,1],List[-0.8414709627547404`,0.8414709627547404`]]],Rule[PlotRangeClipping,True],Rule[PlotRangePadding,List[Scaled[0.02`],Scaled[0.02`]]]]
Po blokih sem locil dele: Graphics ima v sebi prvi vse risanje v prvem argumentu kot en velik List (uradno polno ime za {}) in nastavljanje opcij (kup Rule-ov, ki so drugo ime za "->"). Ta prvi del je pri nas sestavljen iz
inicializacije barv, enega velikega kosa ki ga da od sebe Plot in dodatnega kosa, ki so ga vrinili drawing tools. Tega skopiraj v novo spremeljivko in ga lahko potem dodas v naslednji graf kot Epilog (dodatki pri risanju).

Recimo pri nas bi bilo

Koda: Izberi vse

okraski=Line[List[List[-0.5494172160122285`,0.5984738204000678`],List[-0.06372408522021544`,0.17620743298227315`],List[0.7672207891468432`,0.34352052988366344`],List[0.5916690551256336`,-0.3735355996937235`],List[0.5565587083213919`,-0.5328814062664764`]]]

Plot[Cos[x],{x,-2,2},Epilog->Graphics[okraski]]
V prihodnje se pa poskusi izognit rocnemu risanju na graf ker nad tem kot vidis nimas direktne kontrole nad izvorno kodo, ki bi jo lahko popravljal in dajal na druge grafe. Na enak nacin kot tukaj, namrec lahko rises tudi sam direktno iz kode (mogoce je malo okorno dolocit koordinate ampak je nadaljevanje lazje).

Vse skupaj das v Graphics ki stoji samostojno ali ga das pa v epilog grafu. Primer bi bil kar

Koda: Izberi vse

Graphics[{
Red,Arrow[{{0, 1}, {2, 0}}],
Green,Thickness[0.01],Line[{{0,0},{0,1},{1,1},{0,1}}]
}]
Graphics-e lahko tudi zdruzujes z
Show[g1,g2,g3,...]
kjer lahko pod ... tudi das nove PlotRange in druge lastnosti, ki ti spremenijo pogoje risanja za ta skupek grafov.

Odgovori