ホームページ >バックエンド開発 >Python チュートリアル >Python でこのような美しいプロのイラストを描くことができますか?とても簡単!
皆さん、こんにちは。私は Python 人工知能テクノロジーです。
強くお勧めしますPython のプロット モジュール matplotlib: Python プロット。描かれた絵は本当にハイエンドで上品で、控えめで豪華で含意があります~2Dから3D、スカラーからベクターまで、あらゆる種類の描画に適しています。 eps、pdfからsvg、png、jpgまで様々な形式で保存できます。また、Matplotlib の描画関数は基本的に Matlab の描画関数と似た名前を持っているため、移行の学習コストが比較的低くなります。オープンソースで無料。画像に示すように (タイトル説明の画像は最後にあります): (以下の画像はサムネイル ギャラリーから引用)
通常の関数画像は次のとおりです:
plt.fill(x, y1, 'b', x, y2, 'r', alpha=0.3)
そして、このような散布図 (中国語で何と言うかわかりません...):
plt.scatter(x, y, s=area, alpha=0.5)
絶妙な曲線、半透明のカラーマッチング。高貴でクールな個性を表現する 最も重要なことは、これを実行するには 1 行のコードしか必要としないということです。これからは、Matlab や GNUPlot での苦痛なカラー マッチングに耐える必要はもうありません。
3Dデータを描きたいですか?問題ありません (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)
4 行のコードで実現できます (最後の 3 行は輪郭を描くためのものです)座標平面上の線(厳密に言えば、まだ 1 本の線です)。
さらに、ベクトル フィールドである限り、ネットワークやその他の奇妙なニーズにも対応できます:
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)
これはまだ終わっていません。Matplotlib は、他の人が描いた絵がまだこのように見える場合でも、Latex 数式の挿入をサポートしています (次の図) Matplotlib チュートリアル (翻訳) から引用されています)
次のようなものに変えることができます:
#これに一致すると、実行中のターミナルとして IPython が使用されます (この図は私が描いたものです~):
これは単なるアーティファクトです。それは存在しますか?
アクションは心拍よりも悪いです、何を待っていますか?
@Xu Cheng が思い出したように、matplotlib は xkcd スタイルのグラフィックスも生成できることを付け加えておきたいと思います~
(画像はインターネットから引用)
さらに、IPython Notebook と組み合わせたさらにエキサイティングなコンテンツについては、http://nbviewer.ipython.org/
を参照してください。 Windows システムを使用している場合は、Windows 用の Python - Portable Scientific Python 2/3 32/64 ビット ディストリビューションのディストリビューション バージョンである winpython を試すことができます。
@van li が matplotlib で質問に示されている画像を描画できるかどうかを質問したため、ここでは次のように matplotlib を使用して質問にある画像を描画します。
##コードはこちら:
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默认属性来绘制,效果是这样的(没加误差棒):
次に、位置、サイズ、色、その他の情報を変更するだけで、同様のスタイルの画像が得られます (エラーバーを追加する必要はありません):
この考え方を使ってイラストの描き方を考えると、自分のちょっとしたアイデアを実現したり、真似したり、理想のイラストを作成したりすることが容易になります。
たとえば、ある日、夕方の空の色がとても美しいことに気づき、なぜそれを紙のイラストに描けないだろうかと考えました。 (参照: Matlab 紙イラストのカラー マッチング 2 - 自然なグラデーション)
つまり、
#同様に、Stephen Cobeldick [2] は matplotlib カラー スキームを Matlab に移植しました。
言い換えれば、matplotlib のカラー スキームを Matlab で直接使用でき、常に 'jet' を使用する必要はありません。
紙のイラスト専用に設計されたツールキットが多数あるため、ここでは 1 つずつ紹介しません。
一般的に、ツールは単なるツールであり、優劣はありません。
カッコいいイラストを描きたいなら、ツールを使う人が鍵になります。
集中して頂上を目指しましょう。
参考:
https://www.php.cn/link/b3ddb7c5b10be95dbc3f9152c58becce
https://www.php.cn/link/171ae1bbb81475eb96287dd78565b38b
以上がPython でこのような美しいプロのイラストを描くことができますか?とても簡単!の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。