Grafik aus Linien aufbauen

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
Benutzeravatar
paedubucher
Beiträge: 850
Registriert: 22.02.2009 16:19:02
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Schweiz
Kontaktdaten:

Grafik aus Linien aufbauen

Beitrag von paedubucher » 31.01.2023 10:19:20

Ich habe auf Papier eine Grafik gezeichnet, die aus orthogonalen Linien besteht. Diese sind 1, 2, 3, 4, 5, 6 und 8 cm lang. (Diese Linien bilden Flächen, die ich in einem zweiten Schritt evtl. auch noch einfärben möchte.)

Nun möchte ich diese Grafik möglichst genau durch den Computer zeichnen lassen, ohne händisch herumbasteln zu müssen. Am liebsten würde ich das so angeben:

Code: Alles auswählen

schwarze Linie von 5px von Koordinate (0;3) nach Koordinate (0;6)
schwarze Linie von 5px von Koordinate (0;6) nach Koordinate (4;6)
Herauskommen soll idealerweise SVG und PNG; wobei ich das PNG auch in einem zweiten Schritt aus dem SVG machen könnte. Eine Ausgabe wie PostScript oder PDF wäre aber auch akzeptabel.

Ich habe mal mit pic gearbeitet, aber das geht AFAIK besser, wenn man mix Rechtecken und Kreisen usw. arbeitet, nicht mit losen Linien.

Hat jemand eine Idee?
Habe nun, ach! Java
Python und C-Sharp,
Und leider auch Visual Basic!
Durchaus programmiert mit heissem Bemühn.
Da steh' ich nun, ich armer Tor!
Und bin so klug als wie zuvor.

Benutzeravatar
Meillo
Moderator
Beiträge: 8782
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Grafik aus Linien aufbauen

Beitrag von Meillo » 31.01.2023 10:32:32

SVG kann man direkt von Hand schreiben. Das sind nur geometrische Zeichenanweisungen in XML-Notation. ;-)


Btw: Pic kann auch beliebige Linien anhand von Koordinaten ... Aber das Fuellen von Flaechen ist damit schwierig. Dann lieber Postscript von Hand schreiben ... ist auch nicht so schwierig. Aber SVG ist bestimmt am ehesten was du suchst.
Use ed once in a while!

JTH
Moderator
Beiträge: 3014
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: Grafik aus Linien aufbauen

Beitrag von JTH » 31.01.2023 11:01:31

Wenn LaTeX eine Option ist, ginge das mit TikZ:

Code: Alles auswählen

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\begin{document}

\begin{tikzpicture}[color=black,line cap=rect,line width=5px] % alternativ bei jeder einzelnen Linie festlegbar
  \draw (0,3) -- (0,6);
  \draw (0,6) -- (4,6);
\end{tikzpicture}

\end{document}
Zum Stöbern:
TikZ & PGF Manual
A very minimal introduction to TikZ

Da finden sich bestimmt Wege, das einfach in ein SVG oder PDF mit passenden (= nicht komplette Seite) Maßen umzuwandeln.

Nachtrag:
Das ist ja cool: Mit anderer Dokumentklasse und passendem pdflatex-Aufruf purzelt tatsächlich direkt ein PNG heraus:

Code: Alles auswählen

\documentclass[border=10px,convert,tikz]{standalone}
\usepackage[utf8]{inputenc}
\begin{document}

\begin{tikzpicture}[line cap=rect,line width=5px]
  \draw (0,3) -- (0,6);
  \draw (0,6) -- (4,6);
\end{tikzpicture}

\end{document}

Code: Alles auswählen

$ pdflatex --shell-escape df.tex
$ ls -1 *.{tex,pdf,png}
df.pdf
df.png
df.tex
Was da genau im Hintergrund passiert hab ich jetzt nicht weiter verfolgt.

Ausgabe als SVG ginge mit Debianpdf2svg und zum Beispiel

Code: Alles auswählen

\documentclass[border=10px,tikz,convert={outext=.svg,command=\unexpanded{pdf2svg \infile\space\outfile}}]{standalone}
auch direkt.
Manchmal bekannt als Just (another) Terminal Hacker.

rhHeini
Beiträge: 2260
Registriert: 20.04.2006 20:44:10

Re: Grafik aus Linien aufbauen

Beitrag von rhHeini » 31.01.2023 11:08:13

Zum Zeichnen: schau Dir mal Inkscape an, ist teilweise mit CorelDraw vergleichbar.

Benutzeravatar
paedubucher
Beiträge: 850
Registriert: 22.02.2009 16:19:02
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Schweiz
Kontaktdaten:

Re: Grafik aus Linien aufbauen

Beitrag von paedubucher » 31.01.2023 11:17:55

Meillo hat geschrieben: ↑ zum Beitrag ↑
31.01.2023 10:32:32
SVG kann man direkt von Hand schreiben. Das sind nur geometrische Zeichenanweisungen in XML-Notation. ;-)
Vor SVG bin ich bisher immer zurückgeschreckt; es funktioniert aber tatsächlich recht einfach!

Code: Alles auswählen

<svg width="1200" height="1200" xmlns="http://www.w3.org/2000/svg">
    <path d="
    M 50 350
    L50 1150
    L450 1150
    L450 1050
    L150 1050
    L150 450
    L450 450
    L450 350
    L50 350
    Z" stroke-width="5" stroke="black" fill="grey"/>
    <path d="
    M550 150
    L650 150                                                                           
    L650 950                                                                           
    L250 950                                                                           
    L250 550                                                                           
    L550 550                                                                           
    Z" stroke-width="5" stroke="black" fill="grey"/>                                   
    <path d="                                                                          
    M350 650
    L550 650
    L550 850
    L350 850
    Z" stroke-width="5" stroke="black" fill="white"/>
</svg>
Noch einfacher ginge es mit relativen Angaben; das habe ich zu spät gesehen; aber vom Prinzip her haut es hin! :THX:
Habe nun, ach! Java
Python und C-Sharp,
Und leider auch Visual Basic!
Durchaus programmiert mit heissem Bemühn.
Da steh' ich nun, ich armer Tor!
Und bin so klug als wie zuvor.

Benutzeravatar
Meillo
Moderator
Beiträge: 8782
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Grafik aus Linien aufbauen

Beitrag von Meillo » 31.01.2023 11:30:01

Fuer mich war SVG vor einigen Jahren ein Aha-Erlebnis. Ich war auf der Suche, wie ich computergeneriert Bilder zeichnen lassen kann, um mir das Debuggen einer Robotersteuerung zu erleichtern. SVG war dafuer herrlich niederschwellig. Einfache Print-Anweisungen in eine Textdatei haben ausgereicht, und anschauen konnte ich es im Browser.

(Spaeter habe ich die Bilder mit ImageMagick in ein Pixelformat konvertiert und zuerst zu einem animierten GIF und spaeter zu einem Video zusammengefuegt, was dann auch noch die Bewegungen ueber die Zeit dargestellt hat. Vom Aufwand-Nutzen-Verhaeltnis war das eine der besten Ideen, die ich beim Programmieren hatte. Angefangen hat es mit SVG, das so einfach von Hand zu schreiben ist.)
Use ed once in a while!

Benutzeravatar
paedubucher
Beiträge: 850
Registriert: 22.02.2009 16:19:02
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Schweiz
Kontaktdaten:

Re: Grafik aus Linien aufbauen

Beitrag von paedubucher » 31.01.2023 12:12:18

@JTH: Danke auch für deinen Tipp! Darauf komme ich gerne zurück, wenn ich solche Grafiken im LaTeX-Umfeld benötige. Standalone hat SVG für mich aber das Problem gut gelöst. :THX:
Habe nun, ach! Java
Python und C-Sharp,
Und leider auch Visual Basic!
Durchaus programmiert mit heissem Bemühn.
Da steh' ich nun, ich armer Tor!
Und bin so klug als wie zuvor.

reox
Beiträge: 2459
Registriert: 06.06.2006 22:09:47
Lizenz eigener Beiträge: MIT Lizenz

Re: Grafik aus Linien aufbauen

Beitrag von reox » 05.02.2023 17:26:46

Um noch ein paar Alternativen zu SVG zu geben: Wenn man's exotisch mag, kann man auch G-Code für sowas verwenden. Pro: Kann sogar 3D :D
Ansonsten gibts einige ASCII basierte Grafikformate aus dem Bereich CAD, die man mit ein wenig einlesen auch recht einfach mit der Hand schreiben kann.

curt123
Beiträge: 704
Registriert: 19.10.2018 12:49:35
Wohnort: NRW

Re: Grafik aus Linien aufbauen

Beitrag von curt123 » 08.02.2023 14:08:39

Bei mir war die Anwendung von HTML, CSS und JavaScript eine naheliegende Alternative, um Balken-, Streu- und Liniendiagramme zu erzeugen.
Python mit Matplotlib hätte den Zweck vermutlich auch erfüllen können.

Antworten