Python Code in Java Code

iltisjan

Mitglied
Hi,

ich habe ein (für mich) recht komplexes Java Projekt geschrieben, was soweit auch gut funktioniert. Nun möchte ich aber ein paar schöne Grafiken erzeugen, was mit python in diesem Fall sehr gut funktioniert. Ich möchte also mein bestehendes Java-Projekt mit Python Code erweitern und dann kompilieren, damit jeder es verwenden kann, auch ohne, dass er python installiert hat.
Nun habe ich von Jython gelesen, aber ich tue mich schwer mit der Implementierung.
Wie genau muss ich vorgehen? Ich habe Jython 2.7 runtergeladen und installiert, aber was passiert dann? Ich stelle mir das so vor, dass man irgendwelche python libraries in seienr java Klasse importiert und dann einfach python code und java code mischen kann.
Ist das richtig so?
Funktioniert mein Vorhaben überhaupt?

Falls es wichtig ist:
Ich verwende eclipse

Ich hoffe meine Fragestellung ist einigermaßen klar, ich bin noch neu in der Java Programmierung, also seht es mir bitte nach, wenn ich noch ein paar mehr Fragen stellen muss.
In der Suchfunktion hat auch schonmal jemand was ähnliches gefragt, aber ich wurde nicht wirklich schlau draus.
 

Thallius

Top Contributor
Ich frage mich eher wo das Problem liegt die Grafiken in Java zu erzeugen. Das hat doch auch alles notwendigen Bibliotheken dafür
 

iltisjan

Mitglied
Ich frage mich eher wo das Problem liegt die Grafiken in Java zu erzeugen. Das hat doch auch alles notwendigen Bibliotheken dafür

Ich möchte insgesamt 3 Grafiken erzeugen.
Heatmap
Boxplot
Barplot

Boxplot und Barplot bekomme ich ganz gut hin, aber die heatmap sieht einfach in python viel viel besser aus. Ich habe jetzt echt einiges ausprobiert, aber in pyhton ist man was das angeht viel flexibler und zudem auch sehr viel einfacher.
Ich möchte die einzelnen Datenpunkte in der Heatmap beschriften und die Punkte sollen gut abgegrenzt voneinander sein, sodas man schnell sieht welcher Datenpunkt wohin gehört.
Kurz gesagt, ich mag die heatmap Funktionen in python lieber, weil sie einfacher zu benutzen sind und das Ergebnis schöner aussieht. Entweder liegt es daran, dass ich das mit Java einfach nicht hinbekomme, weil ich es nicht kann (wahrscheinlich), oder weil es mit Java einfach nicht so gut geht (unwahrscheinlich).
 

Robat

Top Contributor
Nicht direkt eine Antwort zu deiner Frage aber hier noch eine andere Idee: portier doch einfach alles nach python. Sollte ja sicherlich auch machbar sein.
 

iltisjan

Mitglied
Nicht direkt eine Antwort zu deiner Frage aber hier noch eine andere Idee: portier doch einfach alles nach python. Sollte ja sicherlich auch machbar sein.

Ja, das habe ich auch überlegt. Allerdings kann ich das Programm dann nur in eine .exe kompilieren.
Das macht das Programm dann nur auf Windows ausführbar. Der Vorteil des jar files ist halt die Flexibilität für Windows und Linux.
Kompilieren muss ich es in jedem Fall, da der Benutzer kein python installiert hat...Java schon.
 

iltisjan

Mitglied
Schau dir mal GraalVM an.
Sieht ziemlich interessant aus auf den ersten Blick. Kennst du dich damit aus?
Sieht ja so aus, als könnte man damit einfach den Code vermischen. Die Frage ist, wie sieht das ganze aus, wenn ich nicht nur einen Hello World Befehl sondern etwas komplexes in etwas komplexen laufen lassen will.
Zum Beispiel eine python Klasse in einer Java Klasse laufen lassen
 

sirbender

Top Contributor
Sieht ziemlich interessant aus auf den ersten Blick. Kennst du dich damit aus?
Sieht ja so aus, als könnte man damit einfach den Code vermischen. Die Frage ist, wie sieht das ganze aus, wenn ich nicht nur einen Hello World Befehl sondern etwas komplexes in etwas komplexen laufen lassen will.
Zum Beispiel eine python Klasse in einer Java Klasse laufen lassen

Ja. Ich kenne mich damit aus. Alles kein Problem.
 

iltisjan

Mitglied
Ja. Ich kenne mich damit aus. Alles kein Problem.
Dann kannst du mir vielleicht weiterhelfen..
Ich habe GraalVM jetzt installiert und kleine Beispiele getestet. So weit, so gut.

Wenn ich nun aber den folgenden python Code (einfach nur eine Heatmap) in meine Java Klasse einbinden möchte, wie muss ich dann vorgehen? Wie gesagt, für einzelne Befehlszeilen verstehe ich das Vorgehen, aber mit dem import von librarys und so weiter wird es etwas komplizierter...

Python:
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
# sphinx_gallery_thumbnail_number = 2

rows = ["A", "B", "C", "D", "E", "F", "G", "H"]
columns = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"]

                   
values = np.array([[0.0474, 0.0475, 0.047, 0.999, 0.0468, 0.0468, 0.0468, 0.047, 0.0471, 0.0467, 0.0472, 0.0481],
                    [0.0333, 0.1808, 0.3116, 1.114, 0.2361, 0.4748, 0.1035, 0.1822, 0.0885, 0.0898, 0.0954, 0.047],
                    [0.0968, 0.2463, 0.1723, 0.877, 0.2801, 0.5383, 0.1014, 0.0774, 0.1286, 0.0869, 0.0888, 0.0468],
                    [0.0984, 0.2303, 0.2679, 0.887, 0.2249, 0.2569, 0.0751, 0.0752, 0.0775, 0.0985, 0.0876, 0.0466],
                    [0.1367, 0.0805, 0.409, 1.002, 0.3857, 0.5032, 0.0951, 0.0839, 0.0861, 0.1636, 0.0923, 0.047],
                    [0.1517, 0.389,  0.1696, 0.987, 0.1472, 0.6806, 0.157, 0.0834, 0.5197, 0.143, 0.1894, 0.0467],
                    [0.0356, 0.4484, 0.3521, 0.956, 0.5312, 0.5037, 0.4991, 0.5523, 0.0966, 0.146, 0.0889, 0.047],
                    [0.0459, 0.0467, 0.0468, 0.899, 0.0465, 0.0469, 0.0465, 0.046, 0.047, 0.0466, 0.0467, 0.0464]])

                   

def heatmap(data, row_labels, col_labels, ax=None,
            cbar_kw={}, cbarlabel="", **kwargs):
    """
    Create a heatmap from a numpy array and two lists of labels.

    Arguments:
        data       : A 2D numpy array of shape (N,M)
        row_labels : A list or array of length N with the labels
                     for the rows
        col_labels : A list or array of length M with the labels
                     for the columns
    Optional arguments:
        ax         : A matplotlib.axes.Axes instance to which the heatmap
                     is plotted. If not provided, use current axes or
                     create a new one.
        cbar_kw    : A dictionary with arguments to
                     :meth:`matplotlib.Figure.colorbar`.
        cbarlabel  : The label for the colorbar
    All other arguments are directly passed on to the imshow call.
    """

    if not ax:
        ax = plt.gca()

    # Plot the heatmap
    im = ax.imshow(data, **kwargs)

    # Create colorbar
    cbar = ax.figure.colorbar(im, ax=ax, **cbar_kw)
    cbar.ax.set_ylabel(cbarlabel, rotation=-90, va="bottom")

    # We want to show all ticks...
    ax.set_xticks(np.arange(data.shape[1]))
    ax.set_yticks(np.arange(data.shape[0]))
    # ... and label them with the respective list entries.
    ax.set_xticklabels(col_labels)
    ax.set_yticklabels(row_labels)

    # Let the horizontal axes labeling appear on top.
    ax.tick_params(top=True, bottom=False,
                   labeltop=True, labelbottom=False)

    # Rotate the tick labels and set their alignment.
    plt.setp(ax.get_xticklabels(), rotation=-30, ha="right",
             rotation_mode="anchor")

    # Turn spines off and create white grid.
    for edge, spine in ax.spines.items():
        spine.set_visible(False)

    ax.set_xticks(np.arange(data.shape[1]+1)-.5, minor=True)
    ax.set_yticks(np.arange(data.shape[0]+1)-.5, minor=True)
    ax.grid(which="minor", color="w", linestyle='-', linewidth=3)
    ax.tick_params(which="minor", bottom=False, left=False)

    return im, cbar


def annotate_heatmap(im, data=None, valfmt="$ {x:.2f}",
                     textcolors=["black", "white"],
                     threshold=None, **textkw):
    """
    A function to annotate a heatmap.

    Arguments:
        im         : The AxesImage to be labeled.
    Optional arguments:
        data       : Data used to annotate. If None, the image's data is used.
        valfmt     : The format of the annotations inside the heatmap.
                     This should either use the string format method, e.g.
                     "$ {x:.2f}", or be a :class:`matplotlib.ticker.Formatter`.
        textcolors : A list or array of two color specifications. The first is
                     used for values below a threshold, the second for those
                     above.
        threshold  : Value in data units according to which the colors from
                     textcolors are applied. If None (the default) uses the
                     middle of the colormap as separation.

    Further arguments are passed on to the created text labels.
    """

    if not isinstance(data, (list, np.ndarray)):
        data = im.get_array()

    # Normalize the threshold to the images color range.
    if threshold is not None:
        threshold = im.norm(threshold)
    else:
        threshold = im.norm(data.max())/2.

    # Set default alignment to center, but allow it to be
    # overwritten by textkw.
    kw = dict(horizontalalignment="center",
              verticalalignment="center")
    kw.update(textkw)

    # Get the formatter in case a string is supplied
    if isinstance(valfmt, str):
        valfmt = matplotlib.ticker.StrMethodFormatter(valfmt)

    # Loop over the data and create a `Text` for each "pixel".
    # Change the text's color depending on the data.
    texts = []
    for i in range(data.shape[0]):
        for j in range(data.shape[1]):
            kw.update(color=textcolors[im.norm(data[i, j]) > threshold])
            text = im.axes.text(j, i, valfmt(data[i, j], None), **kw)
            texts.append(text)

    return texts
   

fig, ax = plt.subplots()

im, cbar = heatmap(values, rows, columns, ax=ax,
                   cmap="Reds", cbarlabel="values")
texts = annotate_heatmap(im, valfmt="{x:.1f} t")

fig.tight_layout()
plt.show()
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Python in Java ausführen Allgemeine Java-Themen 4
F Implementierung von Teilprogrammen [Java|Python] Allgemeine Java-Themen 7
E Mit Java ein Python Programm starten Allgemeine Java-Themen 20
A join."," von python in java Allgemeine Java-Themen 3
S Datenformat zum Austausch zwischen Java und Python? Allgemeine Java-Themen 3
G python scripte aus java aufrufen Allgemeine Java-Themen 2
dercheffe Java wie Python Allgemeine Java-Themen 4
G Python Skript über Dosbox starten Allgemeine Java-Themen 2
M Unsicher, ob das Code richtig ist Allgemeine Java-Themen 4
MarvinsDepression Unbekanntes Zeichen in fremden Code wirft Fragen auf Allgemeine Java-Themen 4
schemil053 Methoden Code-Verbesserung Allgemeine Java-Themen 2
D Webarchive (war): Code verschleiern Allgemeine Java-Themen 7
D Compiler-Fehler child process exited with code 1 Allgemeine Java-Themen 1
Queenman Interface Mein Microsoft Visual Studio Code zeigt komische Dinge & Menüs an Allgemeine Java-Themen 9
A Clean Code: Variable vs. Methode Allgemeine Java-Themen 8
berserkerdq2 Versteht jemand, was diese beiden Zahlen bei dem IJVM Code zu bedeuten haben? Allgemeine Java-Themen 10
OnDemand Releaseversion Tag in Code Allgemeine Java-Themen 5
ERlK JDA Code funktioniert nicht? Allgemeine Java-Themen 4
F Code auslagern Allgemeine Java-Themen 5
D VBA Code mit Java ausführen möglich? Allgemeine Java-Themen 10
N JAVA-Code mit Grafikfenster zeichnet in Windows, aber nicht Mac. Allgemeine Java-Themen 4
JordenJost Unverständlicher Java code? Allgemeine Java-Themen 21
V Hilfe mit Java Code Allgemeine Java-Themen 4
S Processing Java Code verstehen Allgemeine Java-Themen 4
A code wird nicht ausgeführt Allgemeine Java-Themen 3
B Bitte um Code Erklärung Allgemeine Java-Themen 5
N nicht einsehbarer Fehler im code, kann nicht mehr übersetzten Allgemeine Java-Themen 51
N Regulären Ausdruck in normalen Java-Code umwandeln Allgemeine Java-Themen 12
OnDemand Clean Code oder Allgemeine Java-Themen 5
Noahscript Aus einem byte Array Steuerungszeichen und Code bekommen und ersetzen Allgemeine Java-Themen 3
J Simple Date Format Alternativen bitte um Code Allgemeine Java-Themen 14
AGW in Java-Code plötzlich ein paar Wörter in Rot Allgemeine Java-Themen 2
L Best Practice Auslagerung von Code = Performance Optimierung? Allgemeine Java-Themen 4
H Precompilierten code ansehen Allgemeine Java-Themen 3
R Wo müsste ich im Code eine Änderung vornehmen? Allgemeine Java-Themen 6
L Ausgabe von in Echtzeit ausgeführten Code Allgemeine Java-Themen 9
Drachenbauer Wie kann ich die menge an code reduzieren? Allgemeine Java-Themen 28
Thallius Warum ist dieser Code OS abhängig? Allgemeine Java-Themen 10
S Code Erklärung Allgemeine Java-Themen 21
B Pausem im Code Allgemeine Java-Themen 2
T Java-Quiz Code Fehler Allgemeine Java-Themen 10
L Eclipse Java Code ausführen Allgemeine Java-Themen 18
F Java Code ausführen direkt nach Anmelden in Windows Allgemeine Java-Themen 2
F Code in Klassen bringen Allgemeine Java-Themen 4
S Gibt es eigentlich Java Source Code Interpreter..? Allgemeine Java-Themen 13
J JUnit - Auslassen von Code Allgemeine Java-Themen 25
F Klassen Spaghetti Code Vermeidung Allgemeine Java-Themen 16
C code oder Bibliotheken für 2-Center Problem Allgemeine Java-Themen 4
J Code Page characters darstellen Allgemeine Java-Themen 12
J wie sollte man sinnvoll seinen Code aufteilen Allgemeine Java-Themen 6
M Java (GUI) Code verdoppeln oder anzeige mehrmals anzeigen? Allgemeine Java-Themen 8
N Wie öffne ich einen runtergeladadenen Code in IntelliJ Allgemeine Java-Themen 3
R Fehler im Code Allgemeine Java-Themen 1
R Fehler im Code Allgemeine Java-Themen 3
O Standard library nativer C code Allgemeine Java-Themen 1
R Wo ist mein Fehler in diesem Code Allgemeine Java-Themen 7
S Java Editor Bekomme bei der Code-Vervollständigung die Zeichen ​ Allgemeine Java-Themen 3
N Morse Code decoder Allgemeine Java-Themen 9
O Erste Schritte Benzinverbrauch Code Hilfe Allgemeine Java-Themen 3
S Eclipse exit code 805306369 Allgemeine Java-Themen 1
Pataraca Vererbung Code einbinden Allgemeine Java-Themen 3
Developer_X Website HTML Code von HTTPS URL laden Allgemeine Java-Themen 0
S Wie kann ich eine kleine Stelle in meinem Code mit multiplen Threads abarbeiten..? Allgemeine Java-Themen 20
S Code 'innerhalb' des synchronen Bereichs einer BlockingQueue ausfuehren..? Allgemeine Java-Themen 7
F Verständlichkeitsproblem bei Java Code?! Allgemeine Java-Themen 2
G Eclipse Eclipse: Unreachable code Allgemeine Java-Themen 16
P Java Android Code in IOS compilieren? Allgemeine Java-Themen 9
C Code vereinfachen Allgemeine Java-Themen 2
T Hilfe bei Code Allgemeine Java-Themen 3
R Java-Code für folgene Aufgabe? Allgemeine Java-Themen 8
Prafy Best Practice Code Refaktorisierung Allgemeine Java-Themen 7
WetWer Was bedeutet/macht ein Exit-Code Allgemeine Java-Themen 1
D Code für bereitgestellte Methoden Allgemeine Java-Themen 1
perlenfischer1984 HTML Code decodieren Allgemeine Java-Themen 2
C ASCII-Code in Java Allgemeine Java-Themen 1
J Java-Code in DLL packen Allgemeine Java-Themen 5
J LWJGL 3 Error Code 1282 Allgemeine Java-Themen 4
0 Code startet nicht (Keine Warnung/Fehlermeldung) Allgemeine Java-Themen 4
A Frage zu meinem Code Allgemeine Java-Themen 2
B Code generierung Velocity Templates Telosys Allgemeine Java-Themen 1
E Fehlermeldung vor dem Programm code Allgemeine Java-Themen 1
B JAVA - mehrere Clienten gleichzeitig starten. Nicht bei Code! Allgemeine Java-Themen 3
Fischkralle Ausführen von fremden Code Allgemeine Java-Themen 14
wolfgang63 Code snipped Software Allgemeine Java-Themen 1
L Eclipse Editieren des Code templates für Override methods Allgemeine Java-Themen 2
J Java code "plugin" fähig machen Allgemeine Java-Themen 4
alderwaran .jar Code Signing, User-Keystore und Fragen dazu Allgemeine Java-Themen 0
Thallius Wie verstecke ich meinen private Key am besten im Code? Allgemeine Java-Themen 10
A Thread: Code paralell ausführen in mehreren Instanzen Allgemeine Java-Themen 1
B NullPointerException - Aber kein Fehler im Code Allgemeine Java-Themen 4
N HTTP response code: 403 Allgemeine Java-Themen 3
D Code bitte mit 19 stelligen Zahlen kompatibel machen Allgemeine Java-Themen 5
D Java Compiler code referencen Allgemeine Java-Themen 0
B Fehler im Java-Code Allgemeine Java-Themen 4
A PHP-Code zu Java-Code Allgemeine Java-Themen 5
M Code läuft unter windows aber nicht unter Linux Allgemeine Java-Themen 6
X Was macht folgender Code!? Allgemeine Java-Themen 6
K Code zu einem Projekt entschluesseln Allgemeine Java-Themen 15
H Java Leistungssteigerung durch Code Anpassung Allgemeine Java-Themen 5
Fab1 Best Practice Vorgehensweise bestehenden Code/Programm verschönern Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben