www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Mathematica" - Mathematica: MatrixPlot, Farbe
Mathematica: MatrixPlot, Farbe < Mathematica < Mathe-Software < Mathe < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Mathematica"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Mathematica: MatrixPlot, Farbe: Frage (überfällig)
Status: (Frage) überfällig Status 
Datum: 10:37 Mo 04.07.2011
Autor: danm357

Liebe Forengemeinde,

Ich versuche mit Mathematica 8.0, mir die Werte einer Matrix farbig darstellen zu lassen. Dazu wird den Werten der Matrix eine Farbe (automatisch) zugeordnet und die Werte werden an den Positionen, die den Indices der Matrix entsprichen, geplottet.

Nun habe ich ein Problem mit dem Farbverlauf, den ich für diesen sogenannten MatrixPlot verwende.

Hier ein kleines Beispiel zur Illustration:
Ich generiere die Matrix s mit:

s=Table[i*j,{i,10},{j,10}];

die dann folgendermassen ausschaut:

MatrixForm[s]

erste Zeile: Werte von 1 bis 10
zweite Zeile: Werte von 2 bis 20
dweite Zeile: Werte von 3 bis 30 etc.

Geplottet wird das ganze momentan mit:

Needs["PlotLegends'"]

ShowLegend[MatrixPlot[s,PlotRange->{{0,10},{0,10},All},AspectRatio->1/1,ColorFunction->(ColorData["Rainbow"][#1]&),ColorFunctionScaling->True],{ColorData["Rainbow"][1-#1]&,20,ToString[100],ToString[1],LegendPosition->{1.1,-0.4}}]

Vergleicht man nun den Inhalt der Matrix (und den Farbbalken) mit dem Plot, so stellt man fest, dass der Plot nicht so ganz zum Inhalt passt.
Z.B.: die linke obere Ecke der Matrix hat kleine Werte von 1 bis ca. 10. Diese sollten nach Farbbalken eher im lila/blauen Bereich liegen und nicht im grünen. Grün entspräche wohl eher den Werten um die 50.
Würde also jemand bloss den Plot und nicht die Werte der Matrix anschauen, würde er vermuten, dass in der Matrix bloss Werte grösser als 50 vorkommen.

Wähle ich ColorFunctionScaling->False statt True, sehe ich seltsamerweise nur noch einen durchgehend roten Plot, was ich leider gar nicht mehr nachvollziehen kann.

Kann mir vielleicht hier jemand erklären, ob ich was falsch mache oder falsch sehe? Ich hätte schon ganz gerne eine eindeutige Zuordnung der Farben zu den Werten meiner Matrix, so dass man keine falschen Schlüsse auf den Inhalt der Matrix zieht.

Kann mir bei der Gelegenheit auch jemand mitteilen, ob man eigene Farbverläufe in Mathematica generieren kann? Der Farbverlauf "Rainbow" kommt zwar schon nahe an das gewünschte, aber lieber hätte ich es, dass der Farbverlauf mit weiss statt lila startet...
Aber das ist nur kosmetische Nebensache...

Über jede kleine Hilfe würde ich mich freuen!


        
Bezug
Mathematica: MatrixPlot, Farbe: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 15:16 Mo 04.07.2011
Autor: danm357

Liebe Forengemeinde,

nach mühsamer Arbeit, konnte ich den ersten Teil meines Problems selber lösen. Man erhält eine eindeutige Zuordnung der Farben zu den Werten der Matrix, wenn man im MatrixPlot folgendes schreibt:

Needs["PlotLegends'"]

ShowLegend[MatrixPlot[s,PlotRange->{{0,10},{0,10},All},AspectRatio->1/1,ColorFunction->(ColorData["Rainbow"][Rescale[#1,{0,100}]]&),ColorFunctionScaling->False],{(ColorData["Rainbow"][1-#1]&),20,ToString[100],ToString[0],LegendPosition->{1.1,-0.4}}]

Der Trick ist also einfach eine Reskalierung der Farbskala auf die vorhandenen Werte in der Matrix.

Leider kann ich aber noch nicht mein zweites Problem lösen. Ich würde gerne eine andere Farbskala verwenden, am besten meine eigene, da mir all die, die man in Mathematica in der Hilfe unter ColorSchemes finden kann, nicht zusagen.

Ich hoffe also noch auf ein paar Ideen bezüglich dieses Problems!


Bezug
                
Bezug
Mathematica: MatrixPlot, Farbe: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 19:51 Mi 06.07.2011
Autor: danm357

Liebe Forengemeinde,

nach etwas mühsamer Arbeit, habe ich nun endlich rausgefunden, wie man in Mathematica einen eigenen Farbverlauf erzeugen kann.
Damit anderen vielleicht einmal diese Mühen erspart bleiben, stelle ich meine Lösung nun hier rein:

Erzeugt wird der Farbverlauf mit, z.B:

mycolorfun=Function[Blend[{Green,Yellow,Blue},#]];

Der Plot wird dann erzeugt mit:

ShowLegend[MatrixPlot[s,PlotRange->{{0,10},{0,10},All},AspectRatio->1/1,ColorFunction->(mycolorfun[Rescale[#1,{1,100}]]&),ColorFunctionScaling->False],{mycolorfun[Rescale[(1-#1)*100,{1,100}]]&,20,ToString[100],ToString[1],LegendPosition{1.1,-0.4}}]

Wie kann man nun als Autor die Frage als beantwortet abhaken?  


Bezug
        
Bezug
Mathematica: MatrixPlot, Farbe: Fälligkeit abgelaufen
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 11:20 Do 04.08.2011
Autor: matux

$MATUXTEXT(ueberfaellige_frage)
Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Mathematica"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.mathebank.de
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]