Maison >développement back-end >Tutoriel Python >Dessiner d'aussi belles illustrations professionnelles en Python ? Tellement facile !
Bonjour à tous, je suis une technologie d'intelligence artificielle Python
Je recommande vivement le module de traçage de Python matplotlib : traçage python. Les images dessinées sont vraiment haut de gamme et élégantes, discrètes, luxueuses et connotatives ~ Elles conviennent à toutes sortes de dessins de la 2D à la 3D, du scalaire au vectoriel. Peut être enregistré dans différents formats allant de eps, pdf à svg, png, jpg. De plus, les fonctions de dessin de Matplotlib portent fondamentalement des noms similaires à ceux de Matlab, le coût d'apprentissage de la migration est donc relativement faible. Open source et gratuit. Comme le montre l'image (l'image dans la description du titre est à la fin) : (Les images suivantes sont tirées de la galerie de vignettes)
Images de fonctions courantes comme celle-ci :
plt.fill(x, y1, 'b', x, y2, 'r', alpha=0.3)
et ce graphique Scatter (chinois n'est pas disponible) Sachez quoi dire...) :
plt.scatter(x, y, s=area, alpha=0.5)
Courbes exquises, correspondance des couleurs translucides. Montrez votre personnalité noble et cool. Le plus important est qu’il suffit d’une seule ligne de code pour le faire. Désormais, vous n'aurez plus à supporter la pénible correspondance des couleurs dans Matlab et GNUPlot.
Vous voulez dessiner des données 3D ? Pas de problème (il peut être plus pratique d'utiliser mayavi) :
ax.plot_surface(X, Y, Z, rstride=8, cstride=8, alpha=0.3) cset = ax.contourf(X, Y, Z, zdir='z', offset=-100, cmap=cm.coolwarm) cset = ax.contourf(X, Y, Z, zdir='x', offset=-40, cmap=cm.coolwarm) cset = ax.contourf(X, Y, Z, zdir='y', offset=40, cmap=cm.coolwarm)
Vous pouvez avoir quatre lignes de code (les trois dernières lignes servent à tracer des courbes de niveau sur le plan de coordonnées, à proprement parler, c'est toujours une ligne ).
De plus, si vous êtes un champ vectoriel, le réseau ou tout autre besoin étrange peut être géré :
plt.streamplot(X, Y, U, V, color=U, linewidth=2, cmap=plt.cm.autumn) plt.colorbar()
plt.triplot(x, y, triangles, 'go-') plt.title('triplot of user-specified triangulation') plt.xlabel('Longitude (degrees)') plt.ylabel('Latitude (degrees)')
ax = plt.subplot(111, polar=True) bars = ax.bar(theta, radii, width=width, bottom=0.0)
Ce n'est pas encore fini, Matplotlib prend également en charge l'insertion de formules de latex, lorsque l'image dessinée par d'autres ressemble toujours à ceci (l'image suivante est citée du didacticiel Matplotlib (traduction))
Vous pouvez la transformer en quelque chose comme ceci :
Si elle est associée avec IPython comme terminal en cours d'exécution (cette image a été dessinée par moi-même ~) :
C'est simplement un artefact, existe-t-il ?
Il vaut mieux agir que bouger son cœur. Qu'attendez-vous ?
Comme le rappelle @XuZhu, je voudrais ajouter que matplotlib peut également produire des graphiques de style xkcd~
(photo citée sur Internet)
De plus, pour un contenu plus excitant après combinaison avec IPython Notebook, veuillez consulter http://nbviewer.ipython.org/
Si l'installation pose problème et que vous êtes sous un système Windows, vous pouvez essayer winpython - Portable Scientific Python 2/3 32/64bit Distribution pour Windows .
Puisque @van li s'est demandé si matplotlib pouvait dessiner l'image montrée dans la question, j'utiliserai matplotlib pour dessiner l'image dans la question ici comme suit :
Le code est ici :
https : //gist.github.com/coldfog/c479124328fc6bb8b789
Le code est ici :
https://gist.github.com/coldfog/5da63a6958fc0a949b52
看到楼下有人说配色和好看,唉....那我也贴几个吧...只不过当初限于篇幅没有写而已。另外,搜索公众号顶级python后台回复“进阶”,获取一份惊喜礼包。
首先,python有一个专门的配色包jiffyclub/brewer2mpl,提供了从美术角度来讲的精美配色(戳这里感受ColorBrewer: Color Advice for Maps)。
此外还有一些致力于美化绘图的库,用起来也都非常方便,比如olgabot/prettyplotlib 。
废话不多说,上图就是王道。(下面图片来源网络)
有人可能会说需要复杂的设置,其实也不用。比如上边这幅图,只需要多加一个参数就好:
cmap=brewer2mpl.get_map('RdBu', 'diverging', 8, reverse=True).mpl_colormap,
楼下说到统计绘图。嘛seaborn 是一个调用 matplotlib 的统计绘图库,上图:
(https://github.com/mwaskom/seaborn)
代码一行,后边的几乎都是一行,没做其他设置,默认就这样。我就不贴其他的代码了:
g = sns.jointplot(x1, x2, kind="kde", size=7, space=0)
还有个更炫酷的可交互式绘图,大家自己戳开看吧:
http://nbviewer.ipython.org/github/plotly/python-user-guidechaocc/blob/master/s0_getting-started/s0_getting-started.ipynb
遇到安装问题的请尝试Anaconda这个Python发行版。下载安装后直接使用即可,它几乎预装了所有要用到的科学计算及可视化的库。
有盆友在评论里说希望能有完整的教程,确实就这个答案来说,离实际使用还有很大的距离,网上相关的中文资料也不多。不过真要写起来这个答案也装不下,况且写在这个问题下也不是很恰当。等到那天我有专栏了再说吧,到时候也许会写一个关于可视化的系列教程。
翻遍这个问题下的所有回答,发现凡是提到Matlab的,其评价中常有‘锯齿’,‘菜鸟’,‘难看’,‘不忍直视’等标签。
然而,2020年了,技术提升了,观念进步了,当一些基本问题解决后,Matlab还那么‘不堪’吗?
观察Mathematica、Origin、Python/matplotlib、R/ggplot2等软件绘制的数据、结果图,其与Matlab图的差异主要体现在点、线、面等对象属性(位置、尺寸、颜色等)的不同上。
既然只是属性的不同,那是不是只要修改一下这些信息,就可以实现各种软件绘图风格之间的转换了呢?
答案是肯定的。
比如,这是高赞回答 @冯昱尧用Python/matplotlib绘制的一幅图:
我们用Matlab默认属性来绘制,效果是这样的(没加误差棒):
Ensuite, modifiez simplement la position, la taille, la couleur et d'autres informations pour obtenir une image avec un style similaire (aucune barre d'erreur ajoutée) :
Quand nous utilisons cette idée pour réfléchir à la façon de dessiner des illustrations, c'est facile pour réaliser vos propres petites idées, imiter ou même créer des illustrations idéales.
Par exemple, un jour, j'ai trouvé que la couleur du ciel du soir était très belle, et j'ai pensé : Pourquoi ne puis-je pas la dessiner dans l'illustration du papier ? (Voir : Illustration papier Matlab correspondance des couleurs 2 - dégradé naturel)
Alors,
Autre exemple, un jour, j'ai vu une photo de ma copine et j'ai trouvé qu'elle était belle, et j'ai pensé : Pourquoi je ne peux pas le dire. Qu'en est-il des illustrations qu'elle a dessinées dans le journal ? (Voir : Illustration sur papier Matlab correspondance des couleurs 1 - c'est la couleur de ma copine)
Alors,
A ce moment-là, un ami était sur le point de dire : "Oh, répondeur, tu fais toutes ces fantaisies C'est trop compliqué de taper le code ligne par ligne. »
C'est faux.
Tout comme R a ggplot2 et Python a matplotlib, Matlab propose en fait de nombreuses boîtes à outils de dessin prêtes à l'emploi, et vous n'avez pas besoin de les développer vous-même.
Par exemple,
Pierre Morel [1] combiné avec ggplot2, a développé l'outil gramm pour dessiner des graphiques complexes.
Inspiré de ggplot2 (Wickham 2009), l'implémentation R des principes de « grammaire graphique » (Wilkinson 1999), gramm améliore la fonctionnalité de traçage de Matlab, permettant de générer des figures complexes à l'aide de code orienté objet de haut niveau
Exemple. L'effet est le suivant :
De même, Stephen Cobeldick [2] couleur matplotlib Le schéma a été transplanté dans Matlab.
En d'autres termes, vous pouvez utiliser la palette de couleurs de matplotlib directement dans Matlab, et vous n'êtes pas obligé de toujours « jeter ».
Les palettes de couleurs par défaut de MatPlotLib 2.0 portées sur MATLAB Cette soumission inclut également les palettes de couleurs Line ColorOrder
L'exemple d'effet est le suivant :
!
Il existe également de nombreuses boîtes à outils spécifiquement destinées aux illustrations papier, je ne les présenterai donc pas une par une ici.
En général, les outils ne sont que des outils, ils ne sont ni supérieurs ni inférieurs.
Si vous voulez dessiner de belles illustrations, la clé réside dans la personne qui utilise les outils.
Concentrez-vous et atteignez le sommet.
Référence :
https://www.php.cn/link/b3ddb7c5b10be95dbc3f9152c58becce
https://www.php.cn/link/171ae1bbb81475eb9 6287dd78565b38b
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!