[PYTHON] J'ai essayé d'introduire l'outil de génération de diagramme blockdiag

introduction

■ Qu'est-ce que blockdiag?

Depuis le site officiel http://blockdiag.com/ja/index.html

La série blockdiag est un groupe d'outils de génération d'images qui génèrent des images telles que des diagrammes de blocs à partir de texte simple.

■ Ce que j'ai essayé cette fois

"Générer un fichier image à partir d'un fichier de définition textuel" J'ai essayé ça.

■ Site de référence

・ Depuis le site officiel, pour CentOS 6.2 http://blockdiag.com/ja/blockdiag/introduction.html#centos-6-2

・ Depuis le site officiel, la méthode d'exécution et les paramètres de police http://blockdiag.com/ja/blockdiag/introduction.html#id10

▽ Autre Vous pouvez dessiner une figure sans souris! Je suis tombé amoureux de blockdiag http://d.hatena.ne.jp/torazuka/20110620/blockdiag

introduction

■ Environnement

AWS EC2(CentOS 6.5) Python 2.6.6

■ Installation

# yum install python-setuptools python-imaging ipa-gothic-fonts
# easy_install blockdiag

▽ De la gestion des erreurs 2

# yum install python-devel zlib-devel libjpeg-devel

▽ De la gestion des erreurs 4

# yum install freetype-devel.x86_64

▽ De la gestion des erreurs 1

# easy_install pillow
# easy_install webcolors
# easy_install funcparserlib

▽ De la gestion des erreurs 3

# easy_install -U reportlab==2.5

▽ Confirmation de l'installation (package python)

# pip freeze | grep -i "blockdiag\|pillow\|webcolors\|funcparserlib"

Réglage

■ Police

▽ Lors de la spécification de la police lors de l'exécution

$ blockdiag -f /usr/share/fonts/ipa-gothic/ipag.ttf simple.diag

▽ Lors de la définition dans $ HOME / .blockdiagrc

$ vi $HOME/.blockdiagrc
--------------------
[blockdiag]
fontpath = /usr/share/fonts/ipa-gothic/ipag.ttf

Contrôle de fonctionnement

Exécutez la commande blockdiag pour générer un diagramme.

■ Déplacer le répertoire

Commencez par aller à la racine du document du serveur Web où l'image à créer peut être affichée.

# cd /var/www/html

■ À partir d'un simple diagramme

http://blockdiag.com/ja/blockdiag/examples.html#simple-diagram

# vi simple.diag
-----------------
blockdiag {
   A -> B -> C -> D;
   A -> E -> F -> G;
}

・ Générer un diagramme

# blockdiag simple.diag
# blockdiag -Tsvg simple.diag
# blockdiag -Tpdf simple.diag
* Par le haut, format PNG, format SVG, format PDF

・ Vérifier depuis le navigateur http://example.com/simple.png 20141006_blockdiag_sample01.png

http://example.com/simple.svg 20141006_blockdiag_sample02.png

http://example.com/simple.pdf 20141006_blockdiag_sample03.png

■ De l'utilisation du japonais

http://blockdiag.com/ja/blockdiag/examples.html#mutlilingualization

# vi nippon.diag
-----------------
blockdiag admin {
   // Set M17N text using label property.
   A [label = "Ki"];
   B [label = "Accepté"];
   C [label = "Tour"];
   D [label = "Conclusion"];

   A -> B -> C -> D;

   // Use M17N text directly (need to quote).
printemps->été->l'automne->hiver;

   // Use M17N text including symbol characters (need to quote).
   "Le printemps est l'aube" -> "été=Nuit" -> "l'automne.soirée" -> "hiver&faire un effort";
}

・ Générer un diagramme

# blockdiag nippon.diag
# blockdiag -Tsvg nippon.diag
# blockdiag -Tpdf nippon.diag
* Par le haut, format PNG, format SVG, format PDF

・ Vérifier depuis le navigateur

http://example.com/nippon.png 20141006_blockdiag_sample04.png

http://example.com/nippon.svg 20141006_blockdiag_sample05.png

http://example.com/nippon.pdf 20141006_blockdiag_sample06.png

Supplément

■ Traitement des erreurs 1

-Si l'erreur suivante est générée lors de l'exécution de la commande diag

# blockdiag simple.diag
--------------------
Traceback (most recent call last):
  File "/usr/bin/blockdiag", line 5, in <module>
    from pkg_resources import load_entry_point
  File "/usr/lib/python2.6/site-packages/pkg_resources.py", line 2655, in <module>
    working_set.require(__requires__)
  File "/usr/lib/python2.6/site-packages/pkg_resources.py", line 648, in require
    needed = self.resolve(parse_requirements(requirements))
  File "/usr/lib/python2.6/site-packages/pkg_resources.py", line 546, in resolve
    raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: Pillow

-Vérifiez que l'oreiller n'est pas installé

# pip freeze | grep -i "pillow\|webcolors\|funcparserlib"
* Pip est un système de gestion de paquets en Python.

・ Installation d'oreiller

# easy_install pillow

▽ L'erreur suivante après l'introduction de l'oreiller

pkg_resources.DistributionNotFound: webcolors

・ Installation de webcolors

# easy_install webcolors

▽ L'erreur suivante après l'introduction de webcolors

pkg_resources.DistributionNotFound: funcparserlib

・ Installation de funcparserlib

# easy_install funcparserlib

・ Confirmation d'introduction

# pip freeze | grep -i "pillow\|webcolors\|funcparserlib\|reportlab"
Pillow==2.6.0
funcparserlib==0.3.6
webcolors==1.4

■ Traitement des erreurs 2

▽ Lorsque l'erreur suivante est générée pendant l'installation de l'oreiller

(réduction)
_imaging.c:3570: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘init_imaging’
error: Setup script exited with error: command 'gcc' failed with exit status 1

・ Présentez les packages suivants (depuis le forum)

# yum install python-devel zlib-devel libjpeg-devel
------
zlib-devel-1.2.3-29.el6.x86_64
libjpeg-turbo-devel-1.2.1-3.el6_5.x86_64
python-devel-2.6.6-52.el6.x86_64

・ Contre-mesure, passez le chemin suivant (depuis le forum)

# export CFLAGS=-Qunused-arguments
# export CPPFLAGS=-Qunused-arguments

-Exécutez à nouveau la commande d'installation

# easy_install pillow

■ Traitement des erreurs 3

▽ Si vous ne pouvez pas créer un diagramme au format PDF

# blockdiag -Tpdf simple.diag
ERROR: unknown format: PDF

▽ Installez reportlab

easy_install -U reportlab==2.5
# python
Python 2.6.6 (r266:84292, Jan 22 2014, 09:42:36)

>>> import reportlab
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.6/site-packages/reportlab-3.1.8-py2.6-linux-x86_64.egg/reportlab/__init__.py", line 11, in <module>
    raise ImportError("""reportlab requires Python 2.7+ or 3.3+; 3.0-3.2 are not supported.""")
ImportError: reportlab requires Python 2.7+ or 3.3+; 3.0-3.2 are not supported.

■ Traitement des erreurs 4

▽ Lorsque vous essayez de créer un exemple de diagramme en japonais

# blockdiag nippon.diag
ERROR: The _imagingft C module is not installed

▽ Site de référence [python] Lorsque PIL donne une erreur d'importation de _imagingft http://d.hatena.ne.jp/pashango_p/20110919/1316408103

Le fait est que FreeType2 n'a pas été installé lors de la compilation de PIL. Pour Linux (OpenSuse), installez le package "freetype2-devel" puis installez PIL pour résoudre le problème.

▽ Installez freetype-devel

# yum install freetype-devel.x86_64

▽ Désinstaller / installer PIL (Sur le site officiel) Réinstaller le package PIL

# easy_install -m PIL
# \rm -rf /usr/lib/python2.6/site-packages/PIL-1.1.7-py2.6-linux-x86_64.egg

# easy_install PIL

▽ Réinstaller l'oreiller

# easy_install -m pillow
# \rm -rf /usr/lib/python2.6/site-packages/Pillow-2.6.0-py2.6-linux-x86_64.egg

# easy_install pillow

▽ Après les paramètres ci-dessus, lorsque la commande a été exécutée à nouveau, elle a été correctement sortie au format PDF.

# blockdiag nippon.diag

# ls -l nippon.pdf
-rw-r--r--1 racine racine 20415 6 octobre 16:47 2014 nippon.pdf

C'est tout.

Recommended Posts

J'ai essayé d'introduire l'outil de génération de diagramme blockdiag
Continuation: j'ai essayé d'introduire l'outil de génération de diagramme blockdiag
J'ai essayé de présenter Pylint
J'ai essayé de déplacer le ballon
J'ai essayé d'estimer la section.
J'ai essayé de résumer la commande umask
J'ai essayé de reconnaître le mot de réveil
J'ai essayé l'outil de visualisation OSS, sur-ensemble
J'ai essayé de résumer la modélisation graphique.
J'ai essayé d'estimer le rapport de circonférence π de manière probabiliste
J'ai essayé de toucher l'API COTOHA
J'ai essayé Web Scraping pour analyser les paroles.
J'ai essayé d'optimiser le séchage du linge
J'ai essayé de sauvegarder les données avec discorde
J'ai essayé de corriger la forme trapézoïdale de l'image
Qiita Job J'ai essayé d'analyser le travail
LeetCode j'ai essayé de résumer les plus simples
J'ai essayé de mettre en œuvre le problème du voyageur de commerce
J'ai essayé de vectoriser les paroles de Hinatazaka 46!
J'ai essayé de déboguer.
J'ai essayé d'entraîner la fonction péché avec chainer
J'ai essayé de représenter graphiquement les packages installés en Python
Quand j'ai essayé d'introduire python3 dans atom, je suis resté coincé
J'ai essayé de détecter l'iris à partir de l'image de la caméra
J'ai essayé de résumer la forme de base de GPLVM
J'ai essayé de toucher un fichier CSV avec Python
J'ai essayé de prédire le match de la J League (analyse des données)
J'ai essayé de résoudre Soma Cube avec python
J'ai essayé d'approcher la fonction sin en utilisant le chainer
[TensorFlow] J'ai essayé d'introduire l'IA dans le repassage des véhicules
J'ai essayé de mettre Pytest dans la bataille réelle
[Python] J'ai essayé de représenter graphiquement le top 10 des ombres à paupières
J'ai essayé de visualiser les informations spacha de VTuber
J'ai essayé d'effacer la partie négative de Meros
J'ai essayé de résoudre le problème avec Python Vol.1
J'ai essayé de simuler la méthode de calcul de la moyenne des coûts en dollars
J'ai essayé de refaire la factorisation matricielle non négative (NMF)
J'ai essayé d'identifier la langue en utilisant CNN + Melspectogram
J'ai essayé de compléter le graphe de connaissances en utilisant OpenKE
J'ai essayé de classer les voix des acteurs de la voix
J'ai essayé de dessiner un diagramme de configuration à l'aide de diagrammes
J'ai essayé de compresser l'image en utilisant l'apprentissage automatique
J'ai essayé de résumer les opérations de chaîne de Python
[Python] J'ai essayé de résumer le tableau, la méthode de génération du dictionnaire, la méthode de boucle, la notation d'inclusion de liste
J'ai essayé de trouver l'entropie de l'image avec python
J'ai essayé de découvrir les grandes lignes de Big Gorilla
J'ai essayé de porter le code écrit pour TensorFlow sur Theano
[Courses de chevaux] J'ai essayé de quantifier la force du cheval de course
J'ai essayé de simuler la propagation de l'infection avec Python
J'ai essayé d'analyser les émotions de tout le roman "Weather Child" ☔️
[Première API COTOHA] J'ai essayé de résumer l'ancienne histoire
J'ai essayé d'obtenir les informations de localisation du bus Odakyu
J'ai essayé d'apprendre PredNet
J'ai essayé de trouver la moyenne de plusieurs colonnes avec TensorFlow
J'ai essayé de notifier les informations de retard de train avec LINE Notify
J'ai essayé de simuler l'optimisation des publicités à l'aide de l'algorithme Bandit
J'ai essayé d'organiser SVM.