zweite x-Achse < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Hallo,
ich will mit Matlab einen Datensatz mit 2 x-Achsen plotten, also eine standardmässig unter dem Graph und eine zweite darüber.
Das Problem ist, dass der y-Datensatz jeweils der Gleiche ist und wenn ich das dann plotte so wie in der Matlab Hilfe angegeben (allerdings für verschiedene x/y Datensätze), sind die Graphen gegeneinander verschoben.
In der Hilfe steht:
**********************
Using Multiple X- and Y-Axes
The XAxisLocation and YAxisLocation properties specify on which side of the graph to place the x- and y-axes. You can create graphs with two different x-axes and y-axes by superimposing two axes objects and using XAxisLocation and YAxisLocation to position each axis on a different side of the graph. This technique is useful to plot different sets of data with different scaling in the same graph.
Example -- Double Axis Graphs
This example creates a graph to display two separate sets of data using the bottom and left sides as the x- and y-axis for one, and the top and right sides as the x- and y-axis for the other.
Suppose you have two sets of data having different x- and y-ranges:
x1 = [0:.1:40];
y1 = 4.*cos(x1)./(x1+2);
x2 = [1:.2:20];
y2 = x2.^2./x2.^3;
.....
*************
Wie löse ich das Problem am Besten?
Es würde mir schon reichen, wenn ich die XTicks der zweiten Achse automatisch umbenennen könnte mit einer Art Skalierungsfaktor.
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 23:27 Do 27.09.2007 | Autor: | Martin243 |
Hallo und ,
mir ist das Problem nicht ganz klar. Kannst du vielleicht einen kleinen Beispieldatensatz zeigen und grob umschreiben skizzieren, wie der Plot am Ende auszusehen hat? Mir fehlt noch ein kleines bisschen zum *KLICK*.
Gruß
Martin
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 13:28 Sa 29.09.2007 | Autor: | flow1981 |
Hi,
der Graph soll etwa so aussehen.
[Dateianhang nicht öffentlich]
Die untere x-Achse stimmt.
Jetzt möchte ich oben noch eine zweite, wo der zweite Parameter entlang läuft. Ich möchte also den gleichen Datensatz in Abhängigkeit von zwei Parametern plotten.
Das Problem ist, wenn ich die zweite Achse erzeuge mit dem zweiten Parameter, dann plottet er den zweiten Graphen nicht direkt über den ersten, sondern versetzt.
[Dateianhang nicht öffentlich]
Wie kann ich das verhindern?
Dateianhänge: Anhang Nr. 1 (Typ: jpg) [nicht öffentlich] Anhang Nr. 2 (Typ: jpg) [nicht öffentlich]
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 15:38 Sa 29.09.2007 | Autor: | dormant |
Hi!
Du sollst den zweiten Datensatz von 280 bis 380 (und nicht bis 400) laufen lassen. Oder den ersten bis 400 erweitern.
Gruß,
dormant
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 20:34 Sa 29.09.2007 | Autor: | flow1981 |
Ihr versteht mein Problem irgendwie nicht...
Die x-Achse unten soll so bleiben von 280-380.
Die zweite x-Achse soll von 1.5-2.5 laufen.
Der Graph soll dabei der gleiche sein.
Wenn ich das beides dann sozusagen hintereinander in einen Graphen plotte, kriegt matlab das nicht gebacken und verschiebt einen Graphen.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 22:48 Sa 29.09.2007 | Autor: | nschlange |
Häng doch mal das m-File an, mit dem Du arbeitest.
Man sieht ja nicht, was Du machst.
Man könnte ja einfach das Beispiel aus der Hilfe so anpassen:
1: | x1 = [0:.1:40];
| 2: | y1 = 4.*cos(x1)./(x1+2);
| 3: | x2 = [0:.1:20];
| 4: | y2 = 4.*cos(2*x2)./(2*x2+2); |
D.h. die Argumente der 2. Funktion entsprechend der 2. X-Achse so anpassen,
dass die Grafen übereinander liegen.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 17:06 So 30.09.2007 | Autor: | flow1981 |
Mein m-file sieht folgendermassen aus:
clear all;
close all;
load file;
h = planck
b = bmagn
v = 9.557E9;
figure(1)
neu = plot(file(:,1),file(:,2));
x1 = file(:,1);
y1 = file(:,2);
x2 = (h*v)./(b*file(:,1)*1E-3);
y2 = file(:,2);
hl1 = line(x1,y1,'Color','k');
ax1 = gca;
set(ax1,'XColor','k','YColor','k')
xlabel('test')
ax2 = axes('Position',get(ax1,'Position'),...
'XAxisLocation','top',...
'YAxisLocation','right',...
'Color','none',...
'XColor','r','YColor','r');
xlimits = get(ax1,'XLim');
ylimits = get(ax1,'YLim');
xinc = (xlimits(2)-xlimits(1))/5;
%yinc = (ylimits(2)-ylimits(1))/5;
set(ax1,'XTick',[xlimits(1):xinc:xlimits(2)],'YTick',[])
hl2 = line(x2,y2,'Color','k','Parent',ax2);
x2 = (h*v)./(b*file(:,1)*1E-3)
xlimitsa = get(ax2,'XLim');
ylimitsa = get(ax2,'YLim');
xinc = (xlimitsa(2)-xlimitsa(1))/5;
yinc = (ylimitsa(2)-ylimitsa(1))/5;
set(ax2,'XTick',[xlimitsa(1):xinc:xlimitsa(2)],'YTick',[])
xlabel('g value')
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 23:20 Fr 12.10.2007 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|