Excel: Automatisch erstellte Diagramme anhand der Daten?

Guten Mittag,

vorweg: Ich arbeite mit Office365

Ich hab eine Auswertung von Werten über einen langen Zeitraum. Jeder Wert gehört einer Gruppe an; von diesen Gruppen gibt es ca. 50 Stück. Der Zeitraum beläuft sich auf ein Jahr und die Werte sind Durchschnittswerte pro Stunde, allerdings ist der Zeitraum nicht lückenlos. Nachts (18 bis 6 Uhr) gibt es keine Werte und auch sehr geringe Werte habe ich raus sortiert. Insgesamt, nachdem ich die Daten soweit wie möglich reduziert habe, sind es ca. 28000 Zeilen, es können aber auch leicht 1,5 Millionen Zeilen werden.

Nun brauche ich einen möglichst automatischen Weg, der mir diese Daten wie folgt darstellt:

Je Gruppe soll es ein eigenes Diagramm geben.

Auf der X-Achse brauche ich die Zeit, damit sich ein Trend über das ganze Jahr erkennen lässt. Die Lücken, für die es keine Werte gibt, sollen keinen Wert (also auch kein 0) bekommen; wenn man eine Linie spannen würde, wäre das sozusamen der Mittelwert zwischen dem Wert davor und danach.

Auf der Y-Achse soll der jeweilige Wert liegen. Idealerweise, wenn es sehr große Unterschied gibt, wird die Skala der Y-Achse in den Bereichen, wo der Wert einen deutlichen Sprung macht, zusammen gestaucht, damit der Sprung zwar sichtbar ist, aber die Skala nicht unnötig in die Höhe zieht. Das ist aber kein Muss, es würde es bloß erleichtern, einen Überblick zu bekommen.

Ich brauche das automatisch, weil ich nicht immer "nur" 50 Gruppen habe. Wenn ich den Zeitraum etwas anpasse, sind es auf einmal 150 Gruppen und dann kann ich nicht mehr alles manuell machen, ohne Wahnsinnig zu werden.

Kann mir jemand helfen, sowas aufzubauen? :)
Ich muss die Auswertung mehrfach machen, daher brauche ich einen möglichst automatischen Weg.
Wenn jemand einen besseren Weg über z.B. ein anderes Programm kennt, bin ich gerne offen, ich bin nicht an Excel gebunden. Es sollte dann allerdings kein Geld kosten.

Beste Grüße

Excel, Diagramm, Auswertung, Office 365
0 Antworten
Python: Echtzeitdiagramm - Serielle Schnittstelle?

Ich versuche die Werte einer Seriellen Schnistelle über ein Echtzeitdiagramm darzustellen, aber entweder funktioniert es gar nicht erst oder es ist einfach viel zu langsam.

Kann mir da jemand helfen?

Hier ein paar Versuche von mir:

import matplotlib.pyplot as plt
from drawnow import drawnow
import numpy as np
import serial

def make_fig():
  #  plt.show(block=False)
   # fig, ax = plt.subplots()
   # ind = np.arange(1,2)
   # pm, = plt.bar(ind, 0)
    pm.set_facecolor('r')
    ax.set_xticks(ind)
    ax.set_xticklabels(['Nennkraft'])
    ax.set_ylim([-1000 , 1000])
    ax.set_ylabel('Newton')
    ax.set_title('Kraft')

#plt.show(block=False)
#fig, ax = plt.subplots()
plt.show(block=False)
fix, ax = plt.subplots()
ind = np.arange(1,2)
pm, = plt.bar(ind, 0)
#pm.set_facecolor('r')
#ax.set_xticks(ind)
#ax.set_xticklabels(['Nennkraft'])
#ax.set_ylim([-1000 , 1000])
#ax.set_ylabel('Newton')
#ax.set_title('Kraft')
    

plt.ion()
fig, ax = plt.subplots()

x = list()
y = list()


ser = serial.Serial('/dev/ttyUSB0',19200)
line = ser.readline()
line1 = line[21:27]

for i in range(1000):
    ser = serial.Serial('/dev/ttyUSB0',19200)
    line = ser.readline()
    line1 = line[21:27]
    print(line)
    print(line1)
    pm.set_height(line1)
   # temp_y = float(line1)
   # print (temp_y)
   # x.append(i)
   # y.append(temp_y)
    i += 1
    drawnow(make_fig)

Gibt folgenden Fehler

Traceback (most recent call last):
  File "/home/pi/Schreibtisch/python visualisierung2/Balkendiagramm V3.2.py", line 32, in <module>
    drawnow(make_fig)
  File "/usr/local/lib/python3.5/dist-packages/drawnow/drawnow.py", line 61, in drawnow
    draw_fig(args, kwargs)   File "/home/pi/Schreibtisch/python visualisierung2/Balkendiagramm V3.2.py", line 7, in make_fig     plt.bar(x, line1)   File "/usr/lib/python3/dist-packages/matplotlib/pyplot.py", line 2705, in bar     kwargs)   File "/usr/lib/python3/dist-packages/matplotlib/__init__.py", line 1894, in inner     return func(ax, args, kwargs)   File "/usr/lib/python3/dist-packages/matplotlib/axes/_axes.py", line 2079, in bar     "must be length %d or scalar" % nbars) ValueError: incompatible sizes: argument 'height' must be length 1 or scalar 

https://code.i-harness.com/de/q/b531cf

programmieren, Hefe, Diagramm, Python, Serielle Schnittstelle, matplotlib
2 Antworten
Python: Balkendiagramm mit Serieller Schnittstelle?

Ich versuche ein Balkendigramm in Python mit den Werten aus einer Seriellen Schnittstelle laufen zu lassen, bekomme dort aber immer nur Fehler:

import time
import matplotlib.pyplot as plt
import numpy as np
import serial

ser=serial.Serial('/dev/ttyS0',19200)
line = ser.readline()
Ausgabe_nennkraft = line[22:27]

def get_memory(Ausgabe_nennkraft):
    
    return Ausgabe_nennkraft

def get_stats(Ausgabe_nennkraft):
    return get_memory(Ausgabe_nennkraft)


 


fig, ax = plt.subplots()
ind = np.arange(1, 2)

# show the figure, but do not block
plt.show(block=False)

pm, = plt.bar(ind, get_stats(0))
pm.set_facecolor('r')
ax.set_xticks(ind)
ax.set_xticklabels(['Memory'])
ax.set_ylim([-10000, 10000])
ax.set_ylabel('Percent usage')
ax.set_title('System Monitor')

      # run for a little while
for i in range(200):
    line = ser.readline()
    Ausgabe_nennkraft = line[22:27]

    start = time.time()

    m = Ausgabe_nennkraft

    # update the animated artists
    pm.set_height(m)
    print(m)

    # ask the canvas to re-draw itself the next time it
    # has a chance.
    # For most of the GUI backends this adds an event to the queue
    # of the GUI frameworks event loop.
    fig.canvas.draw_idle()
    try:
        # make sure that the GUI framework has a chance to run its event loop
        # and clear any GUI events.  This needs to be in a try/except block
        # because the default implementation of this method is to raise
        # NotImplementedError
        fig.canvas.flush_events()
    except NotImplementedError:
        pass

#stop = time.time()
#print("{fps:.1f} frames per second".format(fps=200 / (stop - start)))

Ich habe das hier als Vorlage benutz:

https://matplotlib.org/gallery/specialty_plots/system_monitor.html#sphx-glr-gallery-specialty-plots-system-monitor-py

Hier die Fehlermeldung:

Traceback (most recent call last):
  File "/home/pi/Schreibtisch/python visualisierung2/Balkendiagram.py", line 53, in <module>
    pm.set_height(m)
  File "/home/pi/.local/lib/python2.7/site-packages/matplotlib/patches.py", line 792, in set_height
    self._update_y1()
  File "/home/pi/.local/lib/python2.7/site-packages/matplotlib/patches.py", line 724, in _update_y1
    self._y1 = self._y0 + self._height
TypeError: ufunc 'add' did not contain a loop with signature matching types dtype('S11') dtype('S11') dtype('S11')

programmieren, Diagramm, Python, balkendiagramm, Serielle Schnittstelle, matplotlib
2 Antworten

Meistgelesene Fragen zum Thema Diagramm

Sekundäre X-Achse in Excel 2013

1 Antwort

Wie erstellt man ein Fließdiagramm?

4 Antworten

Senkrechte Linie in Excel-Diagramm einfügen

2 Antworten

Excel: Gerade in vorhandenes Diagramm einfügen?

3 Antworten

Was sind die Vor- und Nachteile der Tabellen und des Diagramms?

3 Antworten

Excel - ZWEI Graphen in EINEM Diagramm

2 Antworten

Was heißt "etwas gegen etwas auftragen"? :D

3 Antworten

Wie rechne ich Million in Milliarden um?!

4 Antworten

Negative Werte in Excel-Diagramm "positiv" darstellen?

2 Antworten

Diagramm - Neue und gute Antworten