目次
format()簡略化されたコード" >format()簡略化されたコード
时间刻度(Datetime ticks)" >时间刻度(Datetime ticks)
ProPlot 实例演示" >ProPlot 实例演示
ホームページ バックエンド開発 Python チュートリアル Matplotlib の面倒なレイヤー設定にはまだ悩まされています。 ?この Python 描画ツールキットをぜひ見てください。

Matplotlib の面倒なレイヤー設定にはまだ悩まされています。 ?この Python 描画ツールキットをぜひ見てください。

Aug 10, 2023 pm 04:00 PM
python



matplotlib は面倒ですか?描画プロパティの設定?特定のレイヤー設定関数を覚えられないことがよくあるため、長くて退屈な API ドキュメントを読まざるを得ませんか?それとも、複数の matplotlib サブプロットに直面するときにプロパティを設定するループ コードを大量に記述していますか?最後に、1 つの Python 描画パッケージに習熟するだけで、2 次元、空間、その他のタイプのチャート描画方法をすべてマスターできることをまだ望んでいますか? ?また、不満や不満もたくさんありますが、あなたもこんな感じでしょうか?とにかく、上記の点は、matplotlib を使用してチャートをカスタマイズするときに私が最も感じたことです. もちろん、このツイートは文句を言うわけではなく、良い解決策を提供するために投稿します。今日の主役、プロプロットを紹介しましょう。正直に!最初にこのパッケージを発見したとき:
「あれ? そうだ、ロゴは matplotlib によく似ている」 しかし、ほとんどの matplotlib 図面に慣れてよく使うようになったとき、戻ってきてこのツールを見たときパッケージ: 「リ、すごくいい匂いだよ!! さっき何をしたの? 早く使って!」 。つまり、写真のせいで前のツイートがSCIによって何度も修正されたとしたら! ?この Python 科学描画ツールキットを使用すると、科学出版物レベルの図の形式を 1 ステップで設定できることをまだご存じない方は、このツイートでコードを減らして面倒なカスタム描画のニーズを実現する方法を説明します。
  • ProPlot ライブラリの紹介
  • ProPlot サンプルデモンストレーション

ProPlot ライブラリの紹介##Python-matplotlib を使用してグラフを描画する場合、デフォルトの色と形式のテーマを使用できます。描画関数に慣れるのに役立つだけです。優れたビジュアライゼーション作品 (出版レベルであっても、少し芸術的なものであっても) をデザインしたい場合は、

color、scale などの多数の描画関数に精通する必要があります。 、軸、フォント

など。描画複数のサブプロットとなると、これらの操作は多大なエネルギーを消費し、必然的に長いコード記述につながり、エラーも発生しやすくなります。詳細については、私の以前の記事「Python-matplotlib Academic Sc​​atter Chart EE Statistics and Drawing」および「Python-matplotlib 水平積み上げ縦棒グラフの描画」を参照してください。さらに、毎日の描画に matplotlib を使用する必要があり、頻繁にグラフを美しくする必要がある場合は、Proplot 描画パッケージが最適です。適応できないことを心配する必要はありません。人々は matplotlib. カプセル化を高度に開発し、描画機能を大幅に簡素化しました。以下にインストール方法と主な使用方法を簡単に紹介しますので、さらに詳しく知りたい場合は公式サイトを参照してください。

インストール

pip または conda を使用して直接インストールできます。 ,

#for pip
pip install proplot
#for conda
conda install -c conda-forge proplot
ログイン後にコピー

もちろん、バージョンは継続的に更新されるため、次のコードを更新処理に使用することもできます:

#for pip
pip install --upgrade proplot
#for conda
conda upgrade proplot
ログイン後にコピー

format()簡略化されたコード

Proplot 描画チャートでは、matplotlib のように各描画プロパティを設定する必要はありません。提供されている format() 関数は、すべての設定を変更する形式を提供します一気に化する方法です。まず、次のような簡単な例を示します。

  • matplotlib を使用して描画
import matplotlib.pyplot as plt
import matplotlib.ticker as mticker
import matplotlib as mpl
with mpl.rc_context(rc={'axes.linewidth': 1, 'axes.color': 'gray'}):
    fig, axs = plt.subplots(ncols=2, sharey=True)
    axs[0].set_ylabel('bar', color='gray')
    for ax in axs:
        ax.set_xlim(0, 100)
        ax.xaxis.set_major_locator(mticker.MultipleLocator(10))
        ax.tick_params(width=1, color='gray', labelcolor='gray')
        ax.tick_params(axis='x', which='minor', bottom=True)
        ax.set_xlabel('foo', color='gray')
ログイン後にコピー
  • ProPlot 描画
  • ##
    import proplot as plot
    fig, axs = plot.subplots(ncols=2)
    axs.format(linewidth=1, color='gray')
    axs.format(xlim=(0, 100), xticks=10, xtickminor=True, xlabel='foo', ylabel='bar')
    ログイン後にコピー
この簡単な例から、Proplot の単純さがわかります。

A-b-c 上記のformat()#に加えて、複数のサブピクチャのシリアル番号を追加します。 ## コードを大幅に削減 量的にはより便利だと思う描画方法を導入しました - 複数のサブグラフの通し番号が自動的に追加されます 具体的な例は次のとおりです。
# 样本数据
import numpy as np
state = np.random.RandomState(51423)
data = 2 * (state.rand(100, 5) - 0.5).cumsum(axis=0)

import proplot as plot
fig, axs = plot.subplots(ncols=2)
axs[0].plot(data, lw=2)
axs[0].format(xticks=20, xtickminor=False)
axs.format(abc=True,abcstyle='(A)',abcsize=12,abcloc='ul',
    suptitle='Abc label test', title='Title',
    xlabel='x axis', ylabel='y axis'
)
plt.savefig(r'E:\Data_resourses\DataCharm 公众号\Python\学术图表绘制\ProPlot\abc_01.png',
             dpi=900)
ログイン後にコピー

効果は次のとおりです。 スタイル (abcstyle)、位置 (abcloc) を実行することもできます。 、サイズ ( abcsize)

およびその他の設定。その他詳細な設定については公式サイトをご参照ください。

Matplotlib の面倒なレイヤー設定にはまだ悩まされています。 ?この Python 描画ツールキットをぜひ見てください。#カラーバーと凡例

##軸のカラーバーと凡例
import proplot as plot
import numpy as np
fig, axs = plot.subplots(nrows=2, share=0, axwidth='55mm', panelpad='1em')
axs.format(suptitle='Stacked colorbars demo')
state = np.random.RandomState(51423)
N = 10
# Repeat for both axes
for j, ax in enumerate(axs):
    ax.format(
        xlabel='data', xlocator=np.linspace(0, 0.8, 5),
        title=f'Subplot #{j+1}'
    )
    for i, (x0, y0, x1, y1, cmap, scale) in enumerate((
        (0, 0.5, 1, 1, 'grays', 0.5),
        (0, 0, 0.5, 0.5, 'reds', 1),
        (0.5, 0, 1, 0.5, 'blues', 2)
    )):
        if j == 1 and i == 0:
            continue
        data = state.rand(N, N) * scale
        x, y = np.linspace(x0, x1, N + 1), np.linspace(y0, y1, N + 1)
        m = ax.pcolormesh(
            x, y, data, cmap=cmap,
            levels=np.linspace(0, scale, 11)
        )
        ax.colorbar(m, loc='l', label=f'dataset #{i+1}')
        
plt.savefig(r'E:\Data_resourses\DataCharm 公众号\Python\学术图表绘制\ProPlot\colorbar_legend_02.png',
             dpi=900)
ログイン後にコピー
効果は次のとおりです:

    • Figure 颜色条和图例
    import proplot as plot
    import numpy as np
    fig, axs = plot.subplots(ncols=3, nrows=3, axwidth=1.4)
    state = np.random.RandomState(51423)
    m = axs.pcolormesh(
        state.rand(20, 20), cmap='grays',
        levels=np.linspace(0, 1, 11), extend='both'
    )[0]
    axs.format(
        suptitle='Figure colorbars and legends demo', abc=True,
        abcloc='l', abcstyle='(a)', xlabel='xlabel', ylabel='ylabel'
    )
    fig.colorbar(m, label='column 1', ticks=0.5, loc='b', col=1)
    fig.colorbar(m, label='columns 2-3', ticks=0.2, loc='b', cols=(2, 3))
    fig.colorbar(m, label='stacked colorbar', ticks=0.1, loc='b', minorticks=0.05)
    fig.colorbar(m, label=&#39;colorbar with length <1&#39;, ticks=0.1, loc=&#39;r&#39;, length=0.7)
    ログイン後にコピー

    效果如下:Matplotlib の面倒なレイヤー設定にはまだ悩まされています。 ?この Python 描画ツールキットをぜひ見てください。

    时间刻度(Datetime ticks)

    • Datetime ticks
    import proplot as plot
    import numpy as np
    plot.rc.update(
        linewidth=1.2, fontsize=10, ticklenratio=0.7,
        figurefacecolor=&#39;w&#39;, facecolor=&#39;pastel blue&#39;,
        titleloc=&#39;upper center&#39;, titleborder=False,
    )
    fig, axs = plot.subplots(nrows=5, axwidth=6, aspect=(8, 1), share=0)
    axs[:4].format(xrotation=0)  # no rotation for these examples
    
    # Default date locator
    # This is enabled if you plot datetime data or set datetime limits
    axs[0].format(
        xlim=(np.datetime64(&#39;2000-01-01&#39;), np.datetime64(&#39;2001-01-02&#39;)),
        title=&#39;Auto date locator and formatter&#39;
    )
    
    # Concise date formatter introduced in matplotlib 3.1
    axs[1].format(
        xlim=(np.datetime64(&#39;2000-01-01&#39;), np.datetime64(&#39;2001-01-01&#39;)),
        xformatter=&#39;concise&#39;, title=&#39;Concise date formatter&#39;,
    )
    
    # Minor ticks every year, major every 10 years
    axs[2].format(
        xlim=(np.datetime64(&#39;2000-01-01&#39;), np.datetime64(&#39;2050-01-01&#39;)),
        xlocator=(&#39;year&#39;, 10), xformatter=&#39;\&#39;%y&#39;, title=&#39;Ticks every N units&#39;,
    )
    
    # Minor ticks every 10 minutes, major every 2 minutes
    axs[3].format(
        xlim=(np.datetime64(&#39;2000-01-01T00:00:00&#39;), np.datetime64(&#39;2000-01-01T12:00:00&#39;)),
        xlocator=(&#39;hour&#39;, range(0, 24, 2)), xminorlocator=(&#39;minute&#39;, range(0, 60, 10)),
        xformatter=&#39;T%H:%M:%S&#39;, title=&#39;Ticks at specific intervals&#39;,
    )
    
    # Month and year labels, with default tick label rotation
    axs[4].format(
        xlim=(np.datetime64(&#39;2000-01-01&#39;), np.datetime64(&#39;2008-01-01&#39;)),
        xlocator=&#39;year&#39;, xminorlocator=&#39;month&#39;,  # minor ticks every month
        xformatter=&#39;%b %Y&#39;, title=&#39;Ticks with default rotation&#39;,
    )
    axs.format(
        ylocator=&#39;null&#39;, suptitle=&#39;Datetime locators and formatters demo&#39;
    )
    plot.rc.reset()
    plt.savefig(r&#39;E:\Data_resourses\DataCharm 公众号\Python\学术图表绘制\ProPlot\datetick.png&#39;,
                 dpi=900)
    ログイン後にコピー

    效果如下:Matplotlib の面倒なレイヤー設定にはまだ悩まされています。 ?この Python 描画ツールキットをぜひ見てください。

    以上是我认为ProPlot 比较优秀的几点,当然,大家也可以自行探索,发现自己喜欢的技巧。

    ProPlot 实例演示

    我们使用之前的推文数据进行实例操作,详细代码如下:

    #开始绘图
    labels = [&#39;L1&#39;, &#39;L2&#39;, &#39;L3&#39;, &#39;L4&#39;, &#39;L5&#39;]
    data_a = [20, 34, 30, 35, 27]
    data_b = [25, 32, 34, 20, 25]
    data_c = [12, 20, 24, 17, 16]
    
    x = np.arange(len(labels))
    width = .25
    fig, axs = plot.subplots(ncols=2, nrows=1, sharey=1, width=10,height=4)
    #for mark, data in zip()
    axs[0].plot(x,y1, marker=&#39;s&#39;,c=&#39;k&#39;,lw=.5,label=&#39;D1&#39;,markersize=8)
    axs[0].plot(x,y2, marker=&#39;s&#39;,c=&#39;k&#39;,ls=&#39;--&#39;,lw=.5,markersize=8,markerfacecolor=&#39;white&#39;,markeredgewidth=.4,label=&#39;D2&#39;)
    axs[0].plot(x,y3,marker=&#39;^&#39;,c=&#39;k&#39;,lw=.5,markersize=8,markerfacecolor=&#39;dimgray&#39;,markeredgecolor=&#39;dimgray&#39;,
                         label=&#39;D3&#39;)
    axs[0].plot(x,y4,marker=&#39;^&#39;,c=&#39;k&#39;,lw=.5,markersize=8,label=&#39;D4&#39;)
    
    axs[1].bar(x-width/2, data_a,width,label=&#39;category_A&#39;,color=&#39;#130074&#39;,ec=&#39;black&#39;,lw=.5)
    axs[1].bar(x+width/2, data_b, width,label=&#39;category_B&#39;,color=&#39;#CB181B&#39;,ec=&#39;black&#39;,lw=.5)
    axs[1].bar(x+width*3/2, data_c,width,label=&#39;category_C&#39;,color=&#39;#008B45&#39;,ec=&#39;black&#39;,lw=.5)
    
    #先对整体进行设置
    axs.format(ylim=(0,40),
        xlabel=&#39;&#39;, ylabel=&#39;Values&#39;,
        abc=True, abcloc=&#39;ur&#39;, abcstyle=&#39;(A)&#39;,abcsize=13,
        suptitle=&#39;ProPlot Exercise&#39;
    )
    #再对每个子图进行设置
    axs[0].format(ylim=(10,40),title=&#39;Multi-category scatter plot&#39;)
    axs[1].format(title=&#39;Multi-category bar plot&#39;,xticklabels=[&#39;L1&#39;, &#39;L2&#39;, &#39;L3&#39;, &#39;L4&#39;, &#39;L5&#39;])
    
    plt.savefig(r&#39;E:\Data_resourses\DataCharm 公众号\Python\学术图表绘制\ProPlot\test_01.png&#39;,
                dpi=900)
    plt.show()
    ログイン後にコピー

    效果如下:Matplotlib の面倒なレイヤー設定にはまだ悩まされています。 ?この Python 描画ツールキットをぜひ見てください。

    只是简单的绘制,其他的设置也需要熟悉绘图函数,这里就给大家做个简单的演示。

    总结

    本期推文我们介绍了matplotlib非常优秀的科学图表绘图库PrpPlot, 在一定程度上极大了缩减了定制化绘制时间,感兴趣的同学可以持续关注这个库,当然,还是最好在熟悉matplotlib基本绘图函数及图层属性设置函数的基础上啊。

以上がMatplotlib の面倒なレイヤー設定にはまだ悩まされています。 ?この Python 描画ツールキットをぜひ見てください。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPおよびPython:コードの例と比較 PHPおよびPython:コードの例と比較 Apr 15, 2025 am 12:07 AM

PHPとPythonには独自の利点と短所があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1.PHPは、大規模なWebアプリケーションの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンスと機械学習の分野を支配しています。

Python vs. JavaScript:コミュニティ、ライブラリ、リソース Python vs. JavaScript:コミュニティ、ライブラリ、リソース Apr 15, 2025 am 12:16 AM

PythonとJavaScriptには、コミュニティ、ライブラリ、リソースの観点から、独自の利点と短所があります。 1)Pythonコミュニティはフレンドリーで初心者に適していますが、フロントエンドの開発リソースはJavaScriptほど豊富ではありません。 2)Pythonはデータサイエンスおよび機械学習ライブラリで強力ですが、JavaScriptはフロントエンド開発ライブラリとフレームワークで優れています。 3)どちらも豊富な学習リソースを持っていますが、Pythonは公式文書から始めるのに適していますが、JavaScriptはMDNWebDocsにより優れています。選択は、プロジェクトのニーズと個人的な関心に基づいている必要があります。

Dockerの原則の詳細な説明 Dockerの原則の詳細な説明 Apr 14, 2025 pm 11:57 PM

DockerはLinuxカーネル機能を使用して、効率的で孤立したアプリケーションランニング環境を提供します。その作業原則は次のとおりです。1。ミラーは、アプリケーションを実行するために必要なすべてを含む読み取り専用テンプレートとして使用されます。 2。ユニオンファイルシステム(UnionFS)は、違いを保存するだけで、スペースを節約し、高速化する複数のファイルシステムをスタックします。 3.デーモンはミラーとコンテナを管理し、クライアントはそれらをインタラクションに使用します。 4。名前空間とcgroupsは、コンテナの分離とリソースの制限を実装します。 5.複数のネットワークモードは、コンテナの相互接続をサポートします。これらのコア概念を理解することによってのみ、Dockerをよりよく利用できます。

Visual StudioコードはPythonで使用できますか Visual StudioコードはPythonで使用できますか Apr 15, 2025 pm 08:18 PM

VSコードはPythonの書き込みに使用でき、Pythonアプリケーションを開発するための理想的なツールになる多くの機能を提供できます。ユーザーは以下を可能にします。Python拡張機能をインストールして、コードの完了、構文の強調表示、デバッグなどの関数を取得できます。デバッガーを使用して、コードを段階的に追跡し、エラーを見つけて修正します。バージョンコントロールのためにGitを統合します。コードフォーマットツールを使用して、コードの一貫性を維持します。糸くずツールを使用して、事前に潜在的な問題を発見します。

ターミナルVSCODEでプログラムを実行する方法 ターミナルVSCODEでプログラムを実行する方法 Apr 15, 2025 pm 06:42 PM

VSコードでは、次の手順を通じて端末でプログラムを実行できます。コードを準備し、統合端子を開き、コードディレクトリが端末作業ディレクトリと一致していることを確認します。プログラミング言語(pythonのpython your_file_name.pyなど)に従って実行コマンドを選択して、それが正常に実行されるかどうかを確認し、エラーを解決します。デバッガーを使用して、デバッグ効率を向上させます。

VSCODE拡張機能は悪意がありますか? VSCODE拡張機能は悪意がありますか? Apr 15, 2025 pm 07:57 PM

VSコード拡張機能は、悪意のあるコードの隠れ、脆弱性の活用、合法的な拡張機能としての自慰行為など、悪意のあるリスクを引き起こします。悪意のある拡張機能を識別する方法には、パブリッシャーのチェック、コメントの読み取り、コードのチェック、およびインストールに注意してください。セキュリティ対策には、セキュリティ認識、良好な習慣、定期的な更新、ウイルス対策ソフトウェアも含まれます。

Python:自動化、スクリプト、およびタスク管理 Python:自動化、スクリプト、およびタスク管理 Apr 16, 2025 am 12:14 AM

Pythonは、自動化、スクリプト、およびタスク管理に優れています。 1)自動化:OSやShutilなどの標準ライブラリを介してファイルバックアップが実現されます。 2)スクリプトの書き込み:Psutilライブラリを使用してシステムリソースを監視します。 3)タスク管理:スケジュールライブラリを使用してタスクをスケジュールします。 Pythonの使いやすさと豊富なライブラリサポートにより、これらの分野で優先ツールになります。

Windows 8でコードを実行できます Windows 8でコードを実行できます Apr 15, 2025 pm 07:24 PM

VSコードはWindows 8で実行できますが、エクスペリエンスは大きくない場合があります。まず、システムが最新のパッチに更新されていることを確認してから、システムアーキテクチャに一致するVSコードインストールパッケージをダウンロードして、プロンプトとしてインストールします。インストール後、一部の拡張機能はWindows 8と互換性があり、代替拡張機能を探すか、仮想マシンで新しいWindowsシステムを使用する必要があることに注意してください。必要な拡張機能をインストールして、適切に動作するかどうかを確認します。 Windows 8ではVSコードは実行可能ですが、開発エクスペリエンスとセキュリティを向上させるために、新しいWindowsシステムにアップグレードすることをお勧めします。

See all articles