{"id":291,"date":"2014-01-11T15:07:07","date_gmt":"2014-01-11T14:07:07","guid":{"rendered":"http:\/\/semnon.wordpress.com\/?p=291"},"modified":"2016-11-18T19:48:55","modified_gmt":"2016-11-18T17:48:55","slug":"einige-funktionen-in-gnuplot","status":"publish","type":"post","link":"https:\/\/www.arhi-systems.de\/blog\/2014\/einige-funktionen-in-gnuplot","title":{"rendered":"Einige Funktionen in Gnuplot"},"content":{"rendered":"<p>Angeregt durch einen Beitrag auf <a href=\"http:\/\/be-jo.net\/\" target=\"_blank\">be-jo.net<\/a> \u00fcber eine <a href=\"http:\/\/be-jo.net\/2014\/01\/gnuplot-kurze-einfuehrung\/\" target=\"_blank\">kurze Einf\u00fchrung in Gnuplot<\/a> m\u00f6chte ich hier an dieser Stelle noch ein paar Funktionen Vorstellen, die ich letztens ben\u00f6tigt hatte.<\/p>\n<p>Ich habe vier Kurven dargestellt, die einen Leistungsverlauf darstellen als Differenz aus Last eines Netzkunden und der eingespeisten Photovoltaikleistung. Die Leistung liegt als 15-Minuten-Mittelwerte vor. Weiterhin soll bei der Kurve, die negative Leistungswerte enth\u00e4lt, die Fl\u00e4che zwischen der Kurve und der Abszisse f\u00fcr den Bereich farbig dargestellt werden, der unterhalb der Abszisse liegt. Nachfolgend mein gew\u00fcnschtes Ergebnis als Bild:<\/p>\n<div id=\"attachment_292\" style=\"width: 624px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.arhi-systems.de\/blog\/wp-content\/uploads\/2014\/01\/restmenge.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-292\" class=\"size-large wp-image-292\" alt=\"Mit Gnuplot generiertes Diagramm\" src=\"https:\/\/www.arhi-systems.de\/blog\/wp-content\/uploads\/2014\/01\/restmenge.png?w=614\" width=\"614\" height=\"394\" srcset=\"https:\/\/www.arhi-systems.de\/blog\/wp-content\/uploads\/2014\/01\/restmenge.png 2800w, https:\/\/www.arhi-systems.de\/blog\/wp-content\/uploads\/2014\/01\/restmenge-300x192.png 300w, https:\/\/www.arhi-systems.de\/blog\/wp-content\/uploads\/2014\/01\/restmenge-1024x658.png 1024w\" sizes=\"auto, (max-width: 614px) 100vw, 614px\" \/><\/a><p id=\"caption-attachment-292\" class=\"wp-caption-text\">Mit Gnuplot generiertes Diagramm<\/p><\/div>\n<p>Meine Rohdaten liegen in einer CSV-Datei vor, deren Spalten durch ein Semikolon getrennt sind. In der ersten Spalte liegen die Uhrzeit in 15-Minuten-Abst\u00e4nden von 00:00 Uhr bis 23:45 Uhr vor. Die zweite bis vierte Spalte enth\u00e4lt die Leistungswerte, die als Kurve dargestellt werden sollen. Um die gef\u00fcllte Fl\u00e4che darstellen lassen zu k\u00f6nnen, habe ich in der Rohdatendatei noch den Ordinatenwert der Abszisse angeben (y=0 f\u00fcr alle x auf der Abszisse). In Spalte sechs ist die Aufsummierung der Fl\u00e4che zwischen der vierten Kurve und der Ordinate f\u00fcr die Leistungswerte, die unter Null liegen angegeben. Den letzten Wert der Aufsummierung habe ich auch in dem Diagramm dargestellt.<\/p>\n<p>Die mir vorliegenden Rohdaten sehen also folgenderma\u00dfen aus:<\/p>\n<pre>#Uhrzeit;#Restmenge_40kW;#Restmenge_100kW;#Restmenge_250kW;y=0;Restmeng_kWh_Addition\n...\n09:45;160,2318;122,3118;27,5118;0;0\n10:00;152,2280;102,9680;-20,1820;0;-5,0455\n10:15;149,9888;100,7288;-22,4212;0;-10,6508\n10:30;150,5048;101,2448;-21,9052;0;-16,1271\n10:45;151,4892;102,2292;-20,9208;0;-21,3573\n...<\/pre>\n<p>Die CSV-Datei hatte ich im \u00dcbrigen vorher mittels eines Bashskriptes erstellt, mit dem ich die Auswertung der mir gegebenen Daten vorgenommen hatte.<\/p>\n<p>F\u00fcr die Auswertung mit Gnuplot habe ich ebenfalls eine Konfigurationsdatei erstellt. Ohne jetzt auf jedes Detail eingehenzu wollen (auf be-jo.net wurde bereits einiges beschrieben), werde ich hier ein paar Einstellungen von mir hervorheben.<\/p>\n<p>1. Da meine CSV-Datei eine Spaltentrennung mittels Semikolon enth\u00e4lt war es n\u00f6tig dies vor dem plotten mit anzugeben:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nset datafile sep ';'\n<\/pre>\n<p>2. Die Leistungswerte liegen mit einem Komma als Dezimaltrennung vor. Es gibt zwar das Kommando \u201eset decimalsign &#8216;,&#8217;\u201c, aber dieses funktioniert nur f\u00fcr die Ausgabe. Wird beim einlesen einer Datei das Komma als Dezimaltrennzeichen genutzt, hat es bei mir geholfen das Kommando wie folgt zu \u00e4ndern.<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nset decimalsign locale\n<\/pre>\n<p>Dies funktioniert aber nur in sofern, als dass im Betriebssystem das Dezimaltrennzeichen als Komma hinterlegt ist.<\/p>\n<p>3. Weiterhin habe ich den letzten Wert in der Spalte sechs ben\u00f6tigt. Dieser ist bedingt durch meine Berechnung immer ein Minimum dieser Spalte. An den Wert bin ich mittels des Befehls \u201estats\u201c und \u201eSTATS_min\u201c gekommen. Dieser Wert wird negiert in die Variable \u201etotal1\u201c \u00fcbergeben.<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nstats 'restmenge.csv' using 6 nooutput\ntotal1 = -STATS_min\n<\/pre>\n<p>4. Die erste Spalte enth\u00e4lt die x-Werte. Sie liegen im Zeitformat der Form 00:00, 00:15, &#8230; 23:45 vor. Um diese einlesen zu k\u00f6nnen, musste ich das Zeitformat angeben und angeben, dass die x-Daten ein Zeitformat sind. Au\u00dferdem wird das Format f\u00fcr die Abszisse auf das Zeitformat umgestellt.<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nset timefmt &quot;%H:%M&quot;\nset xdata time\nset format x &quot;%H:%M&quot;\n<\/pre>\n<p>5. Um die Achsen in den Koordinatenursprung zu bekommen, hat mir der Befehl<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nset xzeroaxis lt -1 lw 3\nset yzeroaxis lt -1 lw 3\n<\/pre>\n<p>geholfen. Webei \u201elt\u201c und \u201elw\u201c den Linientyp und die Linienbreite angeben.<\/p>\n<p>6. Mein Plot-Befehl sieht dann wie folgt aus:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nplot &#x5B;:]&#x5B;-200:200]'average_wrt.csv' using 1:2 w l lw 3 title &quot;Restmenge ohne Einspeisung&quot;,\n'restmenge.csv' using 1:2 w l lw 3 title &quot;Restmenge mit P_{inst}=40kW&quot;,\n'restmenge.csv' using 1:3 w l lw 3 title &quot;Restmenge mit P_{inst}=100kW&quot;,\n'restmenge.csv' using 1:4 w l lw 3 title &quot;Restmenge mit P_{inst}=250kW&quot;,\n'restmenge.csv' using 1:4:5 w filledcurves below lw 3 lc 4 notitle\n<\/pre>\n<p>Ich m\u00f6chte hier insbesondere auf den vorletzten und letzten Plotbefehl eingehen. Mit dem vorletzten Befehl wird zun\u00e4chst die Kurve geplottet mit der Zeit als x-Werte (Spalte 1) und den Leistungswerten der 4. Spalte als y-Werte. Um nun die gef\u00fcllte Fl\u00e4che unter der x-Achse zu bekommen nutzte ich den letzten Befehl. Dort wird die Kurve nochmal plotte (Spalte 1 zu Spalte 4), aber vom Typ \u201efilledcurves\u201c. Die F\u00fcllung soll dabei nur unter (\u201ebelow\u201c) der Kurve aus Spalte 5 (y=0), als unter der Abszisse dargestellt werden.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Angeregt durch einen Beitrag auf <a href=\"http:\/\/be-jo.net\/\" target=\"_blank\">be-jo.net<\/a> \u00fcber eine <a href=\"http:\/\/be-jo.net\/2014\/01\/gnuplot-kurze-einfuehrung\/\" target=\"_blank\">kurze Einf\u00fchrung in Gnuplot<\/a> m\u00f6chte ich hier an dieser Stelle noch ein paar Funktionen Vorstellen, die ich letztens ben\u00f6tigt hatte.<\/p>\n<p>Ich habe vier Kurven dargestellt, die einen Leistungsverlauf darstellen als Differenz aus Last eines Netzkunden und der eingespeisten Photovoltaikleistung. Die Leistung liegt als 15-Minuten-Mittelwerte vor. Weiterhin soll bei der Kurve, die negative Leistungswerte enth\u00e4lt, die Fl\u00e4che zwischen der Kurve und der Abszisse f\u00fcr den Bereich farbig dargestellt werden, der unterhalb der Abszisse liegt. Nachfolgend mein gew\u00fcnschtes Ergebnis als Bild:<\/p>\n<p>Meine Rohdaten liegen in einer CSV-Datei vor, deren Spalten  \u2026 <a href=\"https:\/\/www.arhi-systems.de\/blog\/2014\/einige-funktionen-in-gnuplot\"> weiterlesen <span class=\"meta-nav\">&rarr; <\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_s2mail":"","footnotes":""},"categories":[4,281],"tags":[46,88,152],"class_list":["post-291","post","type-post","status-publish","format-standard","hentry","category-computer","category-open-source","tag-csv","tag-gnuplot","tag-plot"],"_links":{"self":[{"href":"https:\/\/www.arhi-systems.de\/blog\/wp-json\/wp\/v2\/posts\/291","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.arhi-systems.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.arhi-systems.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.arhi-systems.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.arhi-systems.de\/blog\/wp-json\/wp\/v2\/comments?post=291"}],"version-history":[{"count":1,"href":"https:\/\/www.arhi-systems.de\/blog\/wp-json\/wp\/v2\/posts\/291\/revisions"}],"predecessor-version":[{"id":515,"href":"https:\/\/www.arhi-systems.de\/blog\/wp-json\/wp\/v2\/posts\/291\/revisions\/515"}],"wp:attachment":[{"href":"https:\/\/www.arhi-systems.de\/blog\/wp-json\/wp\/v2\/media?parent=291"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.arhi-systems.de\/blog\/wp-json\/wp\/v2\/categories?post=291"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.arhi-systems.de\/blog\/wp-json\/wp\/v2\/tags?post=291"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}