In Matlab gibt es die Funktion "scatterhist". Das ist letztlich ein Scatterplot mit Histogrammen/Boxplots für die betreffende Datenreihe an den Achsen. Ist es möglich ein solches Plot mit gnuplot zu erstellen?alt text

Quelle: Stackoverflow

gefragt 09 Mai, 17:39

wiewowas's gravatar image

wiewowas
28921831
Akzeptiert: 80%

1

Müsste möglich sein. Vielleicht kann man sich hieran orientieren: http://gnuplot.sourceforge.net/demo_5.0/margins.html Stichwort aligned plots.

Ich würde aber vermutlich eher auf python/matplotlib zurückgreifen und in tikz exportieren, vgl. http://matplotlib.org/examples/pylab_examples/scatter_hist.html

Mit pgfplot kann man vermutlich auch ein solches Diagramm erstellen.

(10 Mai, 08:57) feynman
2

Für gnuplot bist du hier leider falsch. Ich habe mal eine Antwort mit pgfplots in LaTeX gemacht. Prinzipiell solltest du immer ein Minimalbeispiel zu einer spezifischen Frage (genauer als »Ich will ein Bild das so aussieht«) zeigen. Es gibt selten jemanden, der sich erbarmt deine Faulheit auszugleichen.

(10 Mai, 09:57) Henri

»Ich will ein Bild das so aussieht« lese ich nur in deinem Post. Wozu du mich dann direkt als "faul" beschimpfen musst erschließt sich mir nicht. Danke trotzdem für dein "Erbarmen" =)

(03 Jun, 08:20) wiewowas
1

Weil so eine Frage schon sehr im Stil von: »Macht mal die ganze Arbeit für mich.« ist. Das kommt selten gut an, selbst wenn es gar nicht so gemeint war. In anderen Foren werden solche Fragen häufig einfach geschlossen. Das gilt umso mehr, wenn die Frage keinen erkennbaren Bezug zum Forenthema hat, also auch noch als off-topic einzustufen wäre.

(03 Jun, 09:15) saputello

Man kann solche einen Graphen mit pgfplots erzeugen. Um aus einer Tabelle ein Histogramm zu erstellen benötigt man die statistics-Bibliothek von pgfplots. Ich habe die Zufallszahlen mit Lua generiert. Da Lua leider nur gleichverteilte Zufallszahlen kann habe ich die Box-Muller-Transformation zur Erzeugung Gauß-verteilter Zufallszahlen implementiert. Wenn man statt des Lua-Codes lieber eine eigene Datei verwenden möchte, so ersetzt man

Open in Online-Editor
\generatetable{1000}\loadedtable

durch

Open in Online-Editor
\pgfplotstableread{<Dateiname>}\loadedtable

dann wird auch kein LuaTeX mehr benötigt.

Open in Online-Editor
\documentclass{article}
\usepackage{pgfplots}
\usepgfplotslibrary{statistics}
\usepackage{luacode}
\begin{luacode*}
-- Initialize the random number generator according to
-- http://lua-users.org/wiki/MathLibraryTutorial
math.randomseed( tonumber(tostring(os.time()):reverse():sub(1,6)) )

-- standard Box-Muller transform
-- https://en.wikipedia.org/wiki/Box-Muller_transform
function gauss_random(mu, sigma)
   -- State variables
   local generate = false
   local z0 = 0.0
   local z1 = 0.0

   -- Parameters
   local mu = mu or 0.0
   local sigma = sigma or 1.0

   local function random()
      generate = not generate

      if (not generate) then
         return z1 * sigma + mu;
      end

      local u1, u2
      repeat
         u1 = math.random()
         u2 = math.random()
      until ( u1 > 1e-16 )

      z0 = math.sqrt(-2.0 * math.log(u1)) * math.cos(2*math.pi * u2)
      z1 = math.sqrt(-2.0 * math.log(u1)) * math.sin(2*math.pi * u2)
      return z0*sigma + mu
   end

   return random
end

function generate_table(N)
   local gauss = gauss_random()
   tex.sprint("{\r")
   tex.sprint("x y\r")
   for i = 1, N do
      tex.sprint(gauss() .. " " .. gauss() .. "\r")
   end
   tex.sprint("}")
end
\end{luacode*}
\newcommand\generatetable[2]{%
  \expandafter\pgfplotstableread\directlua{generate_table(#1)}#2
}
\begin{document}
\generatetable{1000}\loadedtable
\begin{tikzpicture}
  \begin{axis}[
    name=main,grid=major,xlabel={$x$},ylabel={$y$},
    yticklabel pos=right,ylabel near ticks,
    width=8cm,height=8cm,enlargelimits=false,
    xmin=-4,xmax=4,ymin=-4,ymax=4
    ]
    \addplot+[only marks,mark=o] table {\loadedtable};
    \addlegendentry{data};
  \end{axis}
  \begin{axis}[
    at=(main.below south),anchor=north,rotate=180,
    width=8cm,height=4cm,enlargelimits=false,
    axis lines=none,ybar
    ]
    \addplot+[hist={bins=30,data min=-4,data max=4}]
      table [y index=0] {\loadedtable};
  \end{axis}
  \begin{axis}[
    at=(main.right of east),anchor=west,rotate=-90,
    width=8cm,height=4cm,enlargelimits=false,
    axis lines=none,ybar
    ]
    \addplot+[hist={bins=30,data min=-4,data max=4}]
      table [y index=1] {\loadedtable};
  \end{axis}
\end{tikzpicture}
\end{document}

alt text

Permanenter link

beantwortet 10 Mai, 09:48

Henri's gravatar image

Henri
10.0k31730

bearbeitet 18 Aug, 05:55

@Henri, mit deinem Wissen wirst Du mir langsam unheimlich. :-) Tolles Beispiel!!

(08 Jun, 03:25) dzaic
Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs füge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×7
×3
×1
×1

Frage gestellt: 09 Mai, 17:39

Frage wurde angeschaut: 2,105 Mal

Zuletzt aktualisiert: 18 Aug, 05:55