|
|
|
|
| Zitat von Wraith of Seth
TIL
| |
Too... interesting... to leave? Love?
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
maximum recursion depth exceeded
|
|
|
|
|
|
|
Weiß jemand, wie ich in matplotlib einer Axis eine zweite Y-Skalierung geben kann? Quasi das Komplement zu twinx() - ein Plot/Datensatz, mehrere Skalierungen.
|
|
|
|
|
|
|
http://matplotlib.org/examples/api/two_scales.html
Demonstrate how to do two plots on the same axes with different left and
right scales.
The trick is to use *two different axes* that share the same *x* axis.
You can use separate `matplotlib.ticker` formatters and locators as
desired since the two axes are independent.
Such axes are generated by calling the `Axes.twinx` method. Likewise,
`Axes.twiny` is available to generate axes that share a *y* axis but
have different top and bottom scales.
The twinx and twiny methods are also exposed as pyplot functions.
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von RichterSkala am 10.03.2017 0:55]
|
|
|
|
|
|
| Zitat von csde_rats
Weiß jemand, wie ich in matplotlib einer Axis eine zweite Y-Skalierung geben kann? Quasi das Komplement zu twinx() - ein Plot/Datensatz, mehrere Skalierungen.
| |
... das macht twinx doch?
|
|
|
|
|
|
|
Ne, twinx macht zwei Datensätze auf einem Plot, mit zwei Skalierungen.
Ich will aber ax.plot(...) machen und zwei Skalierungen dafür haben. Also eine Linie, zwei Skalierungen.
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von csde_rats am 10.03.2017 1:29]
|
|
|
|
|
|
Ich versteh's nicht. Kannst du nicht einfach die zweite Skalierung an die rechte Achse schreiben? Du musst da doch nichts rein plotten.
Willst du sowas?
|
Code: |
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(8,6))
axr = ax.twinx()
ax.plot(x, y, ".")
ax.set_ylim(0, 5)
axr.set_ylim(0, 500)
plt.show() |
|
Kann man natürlich beliebig erweitern (für automatische Skalierung, etc.)
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von nobody am 10.03.2017 9:11]
|
|
|
|
|
|
Ja, genau sowas. Ich hatte allerdings schon eine twinx() mit anderen Daten drauf, weswegen das etwas dirtier wurde. Benutze jetzt sowas in der Art: http://matplotlib.org/2.0.0/examples/axes_grid/demo_parasite_axes2.html
host = host_subplot(111, axes_class=AA.Axes)
...
new_fixed_axis = host.get_grid_helper().new_fixed_axis
par2 = host.twinx()
par2.axis["left"] = new_fixed_axis(loc="left",
axes=par2,
offset=(-60, 0))
par2.axis["right"].set_visible(False)
par2.axis["left"].toggle(all=True)
...
Auf par2 wird dann nix geplottet. Reine Show-Axis. Endergebnis:
Nur komisch, dass die Schrift irgendwie leicht unterschiedlich gerendert wird. Naja. Gibt schlimmeres
e: Beeindruckt mich immer wieder, wie flexibel matplotlib ist.
|
[Dieser Beitrag wurde 2 mal editiert; zum letzten Mal von csde_rats am 19.03.2017 22:30]
|
|
|
|
|
|
Matplotlib ist der heißeste Scheiß, yo. Seaborn oben drauf ist auch super.
Legende oder Achsen bunt!
|
|
|
|
|
|
|
Jaaa, man könnte auch nochmal die Ticker der beiden linken Skalen identisch machen, damit beide zum Grid passen
Für Browser gibt es btw. auch Bokeh
|
[Dieser Beitrag wurde 2 mal editiert; zum letzten Mal von csde_rats am 10.03.2017 17:35]
|
|
|
|
|
|
| Zitat von Oli
Mpi weiß ich nicht, aber ich kenne sonst vom öd, dass die Stufe Verhandlungssache ist. Mehr als 3 habe ich allerdings noch nicht gehört.
| |
Soeben ist die Info eingetroffen: Meine volle Stufenlaufzeit wird anerkannt \o/
Ich beginne also mit 3 und komme am 01.11 in Stufe 4.
|
|
|
|
|
|
NumPy
|
Ich verstehe gerade nicht, wieso man (bzw. in dem Buch, welches vor mir liegt) bei einer simplen Implementierung von k-nearest Neighbors:
|
Code: |
X = np.random.rand(10,2)
diff = (X[:,np.newaxis,:]-X[np.newaxis,:,:])**2
dist = diff.sum(-1)
print(dist) |
|
und nicht einfach verwendet, da beides offensichtlich funktioniert. Kann dazu kurz jemand was sagen? Danke.
|
|
|
|
|
|
|
Das ist so lange sie Arrays mindestens 3d sind äquivalent, da numpy nach rechts mit "leeren" slices auffüllt. Man macht das nach meiner Erfahrung hauptsächlich, um explizit bezüglich der Dimensionalität zu sein und Lesbarkeit zu erhöhen. Kommt ein bisschen auf den Kontext an, was klarer ist, finde ich. In deinem Fall wollte der Autor wahrscheinlich betonen, wo in den beiden Termen jeweils die originalen Dimensionen landen und wo das broadcasting stattfindet.
Im Zusammenhang: Ich finde Ellipsen kommen in solchem code viel zu selten vor. Beispiel: array[..., None] fügt ganz hinten eine neue Dimension hinzu.
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von B0rG* am 14.03.2017 17:36]
|
|
|
|
|
|
| Zitat von B0rG*
Im Zusammenhang: Ich finde Ellipsen kommen in solchem code viel zu selten vor. Beispiel: array[..., None] fügt ganz hinten eine neue Dimension hinzu.
| |
Das ist Mal Kennerwissen. Cool.
/E gerade wenn man von Matlab kommt sind die slice Methoden ganz schön cool bei numpy.
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Concrete_R am 15.03.2017 0:05]
|
|
|
|
|
|
| Zitat von Concrete_R
| Zitat von B0rG*
Im Zusammenhang: Ich finde Ellipsen kommen in solchem code viel zu selten vor. Beispiel: array[..., None] fügt ganz hinten eine neue Dimension hinzu.
| |
Das ist Mal Kennerwissen. Cool.
/E gerade wenn man von Matlab kommt sind die slice Methoden ganz schön cool bei numpy.
| |
http://stackoverflow.com/questions/944863/numpy-should-i-use-newaxis-or-none
Es ist das Gleiche.
e1: Und danke @Borg. Was ich nicht verstehe - was meinst du mit 3D-Array? Das Array ist ja 2d, wie man durch "X = np.random.rand(10,2)" sieht. Daher weiß ich nicht, ob ich dich wirklich richtig verstanden habe. Was sagt denn die Schreibweise [:,np.newaxis,:] aus bzw. wann ergeben sich Unterschiede zu [:,np.newaxis]?
e2: Ahh, ich glaube, ich verstehe. Es wird in meinem Beispiel so explizit festgelegt, wo die neue Dimension eingefügt wird?
|
[Dieser Beitrag wurde 2 mal editiert; zum letzten Mal von homer is alive am 15.03.2017 0:19]
|
|
|
|
|
|
S geht mehr um die "...". Ein hübscher Nebeneffekt davon ist, dass man Code schreiben kann, der für beliebig-dimensionale Arrays funktioniert, wenn man eh nur die hinteren Dimensionen manipulieren will. Das ist unheimlich praktisch, wenn man irgendwann viele Versuche gleichzeitig machen will oder so.
e/ Ich habe bei 3D die neue Dimension mitgezählt, deswegen die Verwirrung. Ein Unterschied ergibt sich meines Wissens nur dann, wenn ein Array A sagen wir mal 2D ist (len(A.shape) == 2 ) und du dann zum Beispiel A[:, :, None] und A[:, :, None, :] vergleichen wollen würdest. Denn dann funktioniert ersteres und zweiteres wirft eine Exception. Solange aber genügend Dimensionen da sind, ist es äuqivalent.
|
[Dieser Beitrag wurde 2 mal editiert; zum letzten Mal von B0rG* am 15.03.2017 0:19]
|
|
|
|
|
|
Jetzt verstehe ich. Vielen Dank.
|
|
|
|
|
|
|
| Zitat von homer is alive
e2: Ahh, ich glaube, ich verstehe. Es wird in meinem Beispiel so explizit festgelegt, wo die neue Dimension eingefügt wird?
| |
Also nur um sicher zu gehen: Ich habe zwei verschiedene Dinge angesprochen. Einerseits die Tatsache, dass man leere sliches auf der rechten Seite weglassen kann und sie von numpy automatisch aufgefüllt werden. Das ist, was du meintest und ich wollte dir eigentlich nur recht geben, dass es meistens keinen Unterschied macht.
Außerdem habe ich noch erwähnt, dass man das Ellipsis -Objekt verwenden kann, um numpy zu sagen, wo es mit leeren Slices auffüllen soll, wenn das nicht hinten passieren soll, das war mein zweites Beispiel. Für ein 3D-Array X ist also äquivalent:
X[0, :, :] == X[0] == X[0, ...] == X[0, Ellipsis]
X[:, :, 0] == X[..., 0] == X[Ellipsis, 0]
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von B0rG* am 15.03.2017 0:49]
|
|
|
|
|
|
Ja, das verstehen war nicht auf deine Aussage, sondern auf das gesamte "warum" bezogen. Habe eben nämlich noch einmal mit allem rumexperimentiert und jetzt ist mir alles klar. Vielen Dank nochmal, ich hätte mich auch ein wenig klarer ausdrucken konnen; das hätte dir etwas Zeit gespart.
|
|
|
|
|
|
|
Ellipsis beste sis.
|
|
|
|
|
|
|
Womit malt ihr Schaubilder, Tabellen und sowas für Veröffentlichungen?
|
|
|
|
|
|
|
Nicht dass ich nen hohen IQ in Veröffentlichungen hätte, aber für das bisschen was ich bisher gemacht hab hab ich Inkscape oder Dia genommen. Also hauptsächlich für Zustandsautomaten und sowas.
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von statixx am 19.03.2017 21:28]
|
|
|
|
|
|
lucidchart macht sehr einfach sehr schöne Grafiken, aber ab 60 Elementen oder drei Dokumenten kostet es ein bisschen Geld. Und es ist natürlich proprietäre Software, aber fast alles was wirklich gut funktioniert, ist proprietäre Software, v.d.h.
|
|
|
|
|
|
|
Fast alles was wirklich gut funktioniert, ist keine Software.
|
|
|
|
|
|
|
Womit willst du eigentlich veröffentlichen?
Wenns ein paar Skizzen für LateX sein soll, nimm TikZ und das Excel-Plugin, welches TeX-Tabellen ausgibt.
|
|
|
|
|
|
|
Ich hab gutes ueber canva gehoert, aber noch nie benutzt.
|
|
|
|
|
|
|
| Zitat von SwissBushIndian
Fast alles was wirklich gut funktioniert, ist keine Software.
| |
qft
|
|
|
|
|
|
|
| Zitat von Xerxes-3.0
Womit willst du eigentlich veröffentlichen?
Wenns ein paar Skizzen für LateX sein soll, nimm TikZ und das Excel-Plugin, welches TeX-Tabellen ausgibt.
| |
Wir nutzen in der Firma Office 2013 und bald dann 2016.
|
|
|
|
|
|
Thema: pOT-lnformatik, Mathematik, Physik XX ( Der XX(X)-Thread. ) |