Python を使ってプロ仕様のクールなイラストを描くには? これを要約すると、間違いなくこれです!

写真

方法 1

著者|馮 余姚

https://www.zhihu.com/question/21664179/answer/18928725

Python のプロット モジュール matplotlib: python plotting を強くお勧めします。描かれた絵は本当にハイエンドで高級で、控えめな高級感と含意があります~2Dから3D、スカラーからベクターまで、あらゆる種類の描画に適しています。eps、pdfからsvg、png、jpgまで様々な形式で保存できます。

また、Matplotlib の描画関数は基本的に Matlab と同じ名前であり、移行の学習コストも比較的低くなります。オープンソースで無料。画像のように(タイトル説明の画像は最後にあります):(以下の画像はすべてサムネイルギャラリーから引用)

 推奨読書(タイトルをクリックすると表示されます)

1. Pythonデータマイニングと機械学習の実践技術アプリケーション

2. R-Meta分析と[書誌情報分析、ベイジアン、機械学習など]マルチテクノロジー統合の実践と拡張

3. MATLAB 2023aをベースとした最新の機械学習とディープラーニング

4. 【8日間】サマーキャンプ「AIの研究・教育・実践を総合的に支援」

次のような一般的な関数グラフ:

写真

 
 

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 を使用する場合 (この図は自分で描いたものです~):

写真


まさに神具ですね!

行動は鼓動より悪い、何を待っているの?

クラスメートの @许哖 が思い出したので、matplotlib は xkcd スタイルのグラフも使用できることを付け加えておきたいと思います~

写真

(写真はネットより引用)

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

インストールが面倒で、たまたま Windows システムを使用している場合は、Python winpython - Windows 用の Portable Scientific Python 2/3 32/64 ビット ディストリビューションのディストリビューションを試すことができます。

matplotlib でタイトルに表示されている画像を描画できるかどうかの @van li の質問を考慮して、次のように matplotlib を使用してタイトルの画像を描画します。

写真

コードは次のとおりです。

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

写真

コードは次のとおりです。

https://gist.github.com/coldfog/5da63a6958fc0a949b52

下の階の人がこの配色はいい感じだと言っていたのを見かけました、ああ…じゃあいくつか載せます…でもスペースの関係で書きませんでした。

まず、Python には特別なカラー マッチング パッケージ jiffyclub/brewer2mpl があり、芸術的な観点から絶妙なカラー マッチングを提供します (ここをクリックして ColorBrewer: Color Advice for Maps を体験してください)。


さらに、olgabot/prettyplotlib など、プロットを美しくするための非常に便利なライブラリがいくつかあります。

あまりナンセンスではありませんが、上の写真は最高です。(下の写真はネットから拾ってきました)

写真

写真

写真


複雑な設定が必要という人もいるかもしれませんが、その必要はありません。たとえば、上の図では、パラメーターを 1 つ追加するだけで済みます。

 
 

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


下の階は統計図に関するものです。seaborn は、上記の matplotlib を呼び出す統計描画ライブラリです。

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

写真

コードは1行、以下もほぼ1行で、他には何も設定せずデフォルトでこんな感じです。他のコードは投稿しません:

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

ふん、終わった~~~\(≧▽≦)/~

---

インストールの問題が発生した場合は、Python ディストリビューションである Anaconda を試してください。ダウンロードしてインストールした後すぐに使用でき、使用するほとんどすべての科学計算および視覚化ライブラリがプリインストールされています。

友人の中には、完全なチュートリアルが欲しいとコメントで言っている人もいましたが、確かに、この回答を見る限り、実際に使用するまでにはまだ長い道のりがあり、インターネット上には関連する中国語資料があまりありません。しかし、本当にこの答えを書きたい場合は、我慢できませんし、この質問の下にそれを書くのはあまり適切ではありません。コラムを書くその日まで待って、その時は視覚化に関するチュートリアル シリーズを書くかもしれません。

方法 2

著者|あくん

https://www.zhihu.com/question/21664179/answer/1182984311

この質問のすべての回答を検索したところ、Matlab について言及している人の評価には、「ノコギリ歯」、「新人」、「醜い」、「直視できない」などのタグが含まれていることがわかりました。

しかし、2020年の現在、技術は進歩し、概念も改善されており、いくつかの基本的な問題は解決されていますが、それでもMatlabはそれほど「耐えられない」のでしょうか?

写真

Mathematica、Origin、Python/matplotlib、R/ggplot2などのソフトウェアによって描画されたデータと結果グラフを観察してください。これらとMatlabグラフの違いは、主にオブジェクトの属性(位置、サイズ、色など)の違いに反映されます。 ) 点、線、面など

単なる属性の違いなので、これらの情報を変更することで、各種ソフトの描画スタイル間の変換を実現することは可能でしょうか?

答えは「はい」です。

たとえば、これは @冯玉瑰 に対する Gao Zan の回答によって Python/matplotlib を使用して描かれた図です。

写真

Matlab のデフォルトのプロパティを使用して描画すると、その効果は次のようになります (エラーバーなし)。

写真

次に、位置、サイズ、色、その他の情報を変更するだけで、同様のスタイル (エラーバーなし) の画像が得られます。

写真

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

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

それから、

写真

写真

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

それから、

写真

このとき、友人はこう言いかけています。「ああ、先生、コードを 1 行ずつ入力しなければならないのです。とても面倒です。」

この発言はダメだ。

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

例えば、

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

「グラフィックスの文法」原則 (Wilkinson 1999) の R 実装である ggplot2 (Wickham 2009) からインスピレーションを受け、gramm は Matlab のプロット機能を改善し、高レベルのオブジェクト指向コードを使用して複雑な図形を生成できるようにします。

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

写真

写真

写真

写真

写真

写真

写真

写真

写真

写真

写真

同様に、Stephen Cobeldick [2] は matplotlib カラースキームを Matlab に移植しました。

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

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

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

写真

写真

紙のイラストに特化したツールキットも多数ありますので、ここでは一つ一つ紹介しません。

一般に、道具はあくまで道具であり、高低の区別はありません。

見栄えの良いイラストを描くには、ツールを使う人が鍵となります

一点に集中して頂上を目指します。

おすすめ

転載: blog.csdn.net/cyd20161117/article/details/131898382