error bei mplleaflet.display()

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
naheliegend
User
Beiträge: 439
Registriert: Mittwoch 8. August 2018, 16:42

Hi,

wenn ich dieses bisschen code laufen lasse:

Code: Alles auswählen

   
   import pandas as pd
   import geopandas as gpd
   import matplotlib.pyplot as plt
   import mplleaflet

   
    fig, ax = plt.subplots()

    bla_df.plot(
        ax=ax,
        column='test';
        cmap='tab20',
        alpha=0.7,
    )
    plt.show()
    mplleaflet.display(fig=fig)
kommen eine Reihe an Fehlern:
(...) self.tk.call(_flatten((self._w, cmd)) + self._options(cnf))
_tkinter.TclError: invalid command name "."

During handling of the above exception, another exception occurred:

Traceback (most recent call last): (...)
Ich weiß nicht, wie ich weitermachen soll.

Gruß
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
Jankie
User
Beiträge: 592
Registriert: Mittwoch 26. September 2018, 14:06

Ist das der gesamte Code oder nur ein Teil vom Code?

Ich kenne mich leider nicht damit aus, aber ich glaube dass es nicht richtig ist die Parameter bei plot() mit einem ; zu trennen.
naheliegend
User
Beiträge: 439
Registriert: Mittwoch 8. August 2018, 16:42

Stimmt, du hast Recht. Habe ich geändert, ändert aber nichts am eigentlichen Fehler.

Nein, vorher werden noch die Daten eingelesen, was aber nicht weiter zur Sache tut.

Mit

plt.show()

bekomme ich keinen Fehler. Möchte aber die interaktive Map gerne nutzen.

Weswegen ich noch mplleaflet.display(fig=fig) angefügt habe.
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
Benutzeravatar
__blackjack__
User
Beiträge: 13927
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Das tut in sofern was zur Sache als das hier niemand einfach nachvollziehen kann was da tatsächlich passiert. Ein minimales, lauffähiges Beispiel ist in der Regel ganz nett, damit man das einfach mal selbst ausführen kann.
“Java is a DSL to transform big Xml documents into long exception stack traces.”
— Scott Bellware
naheliegend
User
Beiträge: 439
Registriert: Mittwoch 8. August 2018, 16:42

Okey.

Hier könnt ihr euch die Poly-Daten von Deutschland herunterladen: https://www.suche-postleitzahl.org/downloads

Es ist die plz-gebiete.shp.zip

Entpacken und dann die plz-gebiete.shp eingelesen

Code: Alles auswählen

import geopandas as gpd
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import mplleaflet

plz_shape_df = gpd.read_file('LINKZURDATEI/Data/plz-gebiete.shp', dtype={'plz': str})

fig, ax = plt.subplots()
plz_shape_df.plot(ax=ax, color='orange', alpha=0.8)


#mit plt.show() funktioniert es
#plt.show()

mplleaflet.display(fig=fig)



__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
Benutzeravatar
__blackjack__
User
Beiträge: 13927
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Ich bekomme da eine `UserWarning` und es passiert sonst weiter nichts:

Code: Alles auswählen

$ ./forum18.py 
/usr/local/lib/python3.6/dist-packages/IPython/core/display.py:694: UserWarning: Consider using IPython.display.IFrame instead
  warnings.warn("Consider using IPython.display.IFrame instead")
“Java is a DSL to transform big Xml documents into long exception stack traces.”
— Scott Bellware
naheliegend
User
Beiträge: 439
Registriert: Mittwoch 8. August 2018, 16:42

hm. gut. Woran liegt das?

habe alle Bibliotheken ganz normal über pip isntalliert.

Im Internet wird beschrieben, dass mein "widget" irgendwie destroyed wird zu irgeneinem Zeitpunkt und das einen fehler hervorruft.
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
Benutzeravatar
__blackjack__
User
Beiträge: 13927
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Ich habe auch alle Bibliotheken über ``pip`` installiert. `display()` ist anscheinend dazu da in einem IPython-Notebook aufgerufen zu werden. Das wäre eine nette Information gewesen, dass Du das gar nicht als Programm ausführst. In Jupyterlab bekomme ich aber die gleiche Warnung. Und mein System steigt wegen Speichermangel aus.
“Java is a DSL to transform big Xml documents into long exception stack traces.”
— Scott Bellware
naheliegend
User
Beiträge: 439
Registriert: Mittwoch 8. August 2018, 16:42

Okey, danke für die Hilfe. Den generellen Fehler konnte ich nicht beheben.

ich habe eine andere Bibliothek: Folium gefunden, welche genau das mitbringt, wonach ich gesucht habe.
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
Antworten