ホームページ  >  記事  >  バックエンド開発  >  Python でこのような美しいプロのイラストを描くことができますか?とても簡単!

Python でこのような美しいプロのイラストを描くことができますか?とても簡単!

王林
王林転載
2023-04-13 15:01:061294ブラウズ

Python でこのような美しいプロのイラストを描くことができますか?とても簡単!

本文

皆さん、こんにちは。私は Python 人工知能テクノロジーです。

方法 1

強くお勧めしますPython のプロット モジュール matplotlib: Python プロット。描かれた絵は本当にハイエンドで上品で、控えめで豪華で含意があります~2Dから3D、スカラーからベクターまで、あらゆる種類の描画に適しています。 eps、pdfからsvg、png、jpgまで様々な形式で保存できます。また、Matplotlib の描画関数は基本的に Matlab の描画関数と似た名前を持っているため、移行の学習コストが比較的低くなります。オープンソースで無料。画像に示すように (タイトル説明の画像は最後にあります): (以下の画像はサムネイル ギャラリーから引用)

通常の関数画像は次のとおりです:

Python でこのような美しいプロのイラストを描くことができますか?とても簡単!

plt.fill(x, y1, 'b', x, y2, 'r', alpha=0.3)

そして、このような散布図 (中国語で何と言うかわかりません...):

Python でこのような美しいプロのイラストを描くことができますか?とても簡単!

plt.scatter(x, y, s=area, alpha=0.5)

絶妙な曲線、半透明のカラーマッチング。高貴でクールな個性を表現する 最も重要なことは、これを実行するには 1 行のコードしか必要としないということです。これからは、Matlab や GNUPlot での苦痛なカラー マッチングに耐える必要はもうありません。

3Dデータを描きたいですか?問題ありません (mayavi を使用した方が便利かもしれません):

Python でこのような美しいプロのイラストを描くことができますか?とても簡単!

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 本の線です)。

さらに、ベクトル フィールドである限り、ネットワークやその他の奇妙なニーズにも対応できます:

Python でこのような美しいプロのイラストを描くことができますか?とても簡単!

plt.streamplot(X, Y, U, V, color=U, linewidth=2, cmap=plt.cm.autumn)
plt.colorbar()

Python でこのような美しいプロのイラストを描くことができますか?とても簡単!

plt.triplot(x, y, triangles, 'go-')
plt.title('triplot of user-specified triangulation')
plt.xlabel('Longitude (degrees)')
plt.ylabel('Latitude (degrees)')

Python でこのような美しいプロのイラストを描くことができますか?とても簡単!

ax = plt.subplot(111, polar=True)
bars = ax.bar(theta, radii, width=width, bottom=0.0)

これはまだ終わっていません。Matplotlib は、他の人が描いた絵がまだこのように見える場合でも、Latex 数式の挿入をサポートしています (次の図) Matplotlib チュートリアル (翻訳) から引用されています)

Python でこのような美しいプロのイラストを描くことができますか?とても簡単!

次のようなものに変えることができます:

Python でこのような美しいプロのイラストを描くことができますか?とても簡単!

#これに一致すると、実行中のターミナルとして IPython が使用されます (この図は私が描いたものです~):

Python でこのような美しいプロのイラストを描くことができますか?とても簡単!

これは単なるアーティファクトです。それは存在しますか?

アクションは心拍よりも悪いです、何を待っていますか?

@Xu Cheng が思い出したように、matplotlib は xkcd スタイルのグラフィックスも生成できることを付け加えておきたいと思います~

Python でこのような美しいプロのイラストを描くことができますか?とても簡単!

(画像はインターネットから引用)

さらに、IPython Notebook と組み合わせたさらにエキサイティングなコンテンツについては、http://nbviewer.ipython.org/

を参照してください。 Windows システムを使用している場合は、Windows 用の Python - Portable Scientific Python 2/3 32/64 ビット ディストリビューションのディストリビューション バージョンである winpython を試すことができます。

@van li が matplotlib で質問に示されている画像を描画できるかどうかを質問したため、ここでは次のように matplotlib を使用して質問にある画像を描画します。

##コードはここにあります:

Python でこのような美しいプロのイラストを描くことができますか?とても簡単!

https://gist.github.com/coldfog/c479124328fc6bb8b789



##コードはこちら:

Python でこのような美しいプロのイラストを描くことができますか?とても簡単!https://gist.github.com/coldfog/5da63a6958fc0a949b52

看到楼下有人说配色和好看,唉....那我也贴几个吧...只不过当初限于篇幅没有写而已。另外,搜索公众号顶级python后台回复“进阶”,获取一份惊喜礼包。

首先,python有一个专门的配色包jiffyclub/brewer2mpl,提供了从美术角度来讲的精美配色(戳这里感受ColorBrewer: Color Advice for Maps)。

此外还有一些致力于美化绘图的库,用起来也都非常方便,比如olgabot/prettyplotlib 。

废话不多说,上图就是王道。(下面图片来源网络)

Python でこのような美しいプロのイラストを描くことができますか?とても簡単!

Python でこのような美しいプロのイラストを描くことができますか?とても簡単!

Python でこのような美しいプロのイラストを描くことができますか?とても簡単!

有人可能会说需要复杂的设置,其实也不用。比如上边这幅图,只需要多加一个参数就好:

cmap=brewer2mpl.get_map('RdBu', 'diverging', 8, reverse=True).mpl_colormap,

楼下说到统计绘图。嘛seaborn 是一个调用 matplotlib 的统计绘图库,上图:

(https://github.com/mwaskom/seaborn)  

Python でこのような美しいプロのイラストを描くことができますか?とても簡単!

代码一行,后边的几乎都是一行,没做其他设置,默认就这样。我就不贴其他的代码了:

g = sns.jointplot(x1, x2, kind="kde", size=7, space=0)

Python でこのような美しいプロのイラストを描くことができますか?とても簡単!

Python でこのような美しいプロのイラストを描くことができますか?とても簡単!

Python でこのような美しいプロのイラストを描くことができますか?とても簡単!

Python でこのような美しいプロのイラストを描くことができますか?とても簡単!

Python でこのような美しいプロのイラストを描くことができますか?とても簡単!

还有个更炫酷的可交互式绘图,大家自己戳开看吧:

http://nbviewer.ipython.org/github/plotly/python-user-guidechaocc/blob/master/s0_getting-started/s0_getting-started.ipynb

遇到安装问题的请尝试Anaconda这个Python发行版。下载安装后直接使用即可,它几乎预装了所有要用到的科学计算及可视化的库。

有盆友在评论里说希望能有完整的教程,确实就这个答案来说,离实际使用还有很大的距离,网上相关的中文资料也不多。不过真要写起来这个答案也装不下,况且写在这个问题下也不是很恰当。等到那天我有专栏了再说吧,到时候也许会写一个关于可视化的系列教程。

方法二

翻遍这个问题下的所有回答,发现凡是提到Matlab的,其评价中常有‘锯齿’,‘菜鸟’,‘难看’,‘不忍直视’等标签。

然而,2020年了,技术提升了,观念进步了,当一些基本问题解决后,Matlab还那么‘不堪’吗?

Python でこのような美しいプロのイラストを描くことができますか?とても簡単!

观察Mathematica、Origin、Python/matplotlib、R/ggplot2等软件绘制的数据、结果图,其与Matlab图的差异主要体现在点、线、面等对象属性(位置、尺寸、颜色等)的不同上。

既然只是属性的不同,那是不是只要修改一下这些信息,就可以实现各种软件绘图风格之间的转换了呢?

答案是肯定的。

比如,这是高赞回答 @冯昱尧用Python/matplotlib绘制的一幅图:

Python でこのような美しいプロのイラストを描くことができますか?とても簡単!

我们用Matlab默认属性来绘制,效果是这样的(没加误差棒):

Python でこのような美しいプロのイラストを描くことができますか?とても簡単!

次に、位置、サイズ、色、その他の情報を変更するだけで、同様のスタイルの画像が得られます (エラーバーを追加する必要はありません):

Python でこのような美しいプロのイラストを描くことができますか?とても簡単!

この考え方を使ってイラストの描き方を考えると、自分のちょっとしたアイデアを実現したり、真似したり、理想のイラストを作成したりすることが容易になります。

たとえば、ある日、夕方の空の色がとても美しいことに気づき、なぜそれを紙のイラストに描けないだろうかと考えました。 (参照: Matlab 紙イラストのカラー マッチング 2 - 自然なグラデーション)

つまり、

Python でこのような美しいプロのイラストを描くことができますか?とても簡単!

Python でこのような美しいプロのイラストを描くことができますか?とても簡単!

# #別の例として、ある日、ガールフレンドの写真を見て美しいと思い、「なぜ彼女を論文のイラストに描くことができないのだろう?」と考えました。 (参照: Matlab 紙イラストのカラー マッチング 1 - 私のガール フレンドの色)


つまり、


Python でこのような美しいプロのイラストを描くことができますか?とても簡単!

現時点では、 「ああ、回答者さん、こんな凝ったことを 1 行ずつ入力しなければなりません。面倒すぎます。」


これは間違っています。それだけです。


R には ggplot2 があり、Python には matplotlib があるのと同じように、Matlab には実際に既製の描画ツールキットが多数あり、自分で開発する必要はありません。


たとえば、


Pierre Morel [1] は、ggplot2 と組み合わせて、複雑なグラフィックスを描画するための gramm ツールを開発しました。


「グラフィックスの文法」原則 (Wilkinson 1999) の R 実装である ggplot2 (Wickham 2009) に触発され、gramm は Matlab のプロット機能を改善し、高レベルのオブジェクト指向を使用して複雑な図形を生成できるようにします。 code.


効果の例は次のとおりです。


Python でこのような美しいプロのイラストを描くことができますか?とても簡単!

Python でこのような美しいプロのイラストを描くことができますか?とても簡単!

Python でこのような美しいプロのイラストを描くことができますか?とても簡単!

Python でこのような美しいプロのイラストを描くことができますか?とても簡単!

Python でこのような美しいプロのイラストを描くことができますか?とても簡単!

Python でこのような美しいプロのイラストを描くことができますか?とても簡単!

Python でこのような美しいプロのイラストを描くことができますか?とても簡単!

Python でこのような美しいプロのイラストを描くことができますか?とても簡単!

Python でこのような美しいプロのイラストを描くことができますか?とても簡単!

Python でこのような美しいプロのイラストを描くことができますか?とても簡単!

#同様に、Stephen Cobeldick [2] は matplotlib カラー スキームを Matlab に移植しました。 Python でこのような美しいプロのイラストを描くことができますか?とても簡単!

言い換えれば、matplotlib のカラー スキームを Matlab で直接使用でき、常に 'jet' を使用する必要はありません。

#MatPlotLib 2.0 のデフォルト カラーマップが MATLAB に移植されました。この提出には Line ColorOrder カラーマップも含まれています!


サンプル効果は次のとおりです:



Python でこのような美しいプロのイラストを描くことができますか?とても簡単!

紙のイラスト専用に設計されたツールキットが多数あるため、ここでは 1 つずつ紹介しません。

一般的に、ツールは単なるツールであり、優劣はありません。

カッコいいイラストを描きたいなら、ツールを使う人が鍵になります。

集中して頂上を目指しましょう。

参考:

https://www.php.cn/link/b3ddb7c5b10be95dbc3f9152c58becce

https://www.php.cn/link/171ae1bbb81475eb96287dd78565b38b

以上がPython でこのような美しいプロのイラストを描くことができますか?とても簡単!の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事は51cto.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。