ホームページ バックエンド開発 Python チュートリアル Python描画ライブラリの基本的な操作方法を紹介

Python描画ライブラリの基本的な操作方法を紹介

May 21, 2018 am 11:31 AM
numpy

この記事では、主に numpy+matplotlib を使用した描画の基本操作を紹介します。この記事の紹介は非常に詳細であり、matplotlib の描画を学習するのに一定の参考となる価値があります。必要な方はぜひ一緒に学習してください。

簡単な説明

Matplotlib は、Python ベースの 2D 描画ライブラリで、Python スクリプトを使用して折れ線グラフ、ヒストグラム、パワー スペクトル グラフ、散布図、その他の一般的なグラフを簡単に描画できます。構文はシンプルです。詳しい紹介はmatplot公式サイトをご覧ください。

Numpy (数値 Python) は、MATLAB を模倣した Python 数値演算の拡張機能であり、行列データ型、ベクトル処理、高度な演算ライブラリなど、多くの高度な数値プログラミング ツールを提供します。厳密なデジタル処理に特化して設計されており、NASAは登場以来、本来fortranやmatlabで行っていた多くの作業をnumpyに引き継いだと言われており、その威力を発揮しています。 。 。彼の公式ウェブサイトはここにあり、具体的な情報がそこにあります。

インストール

$sudo apt-get install python-matplotlib
$sudo apt-get install python-numpy
ログイン後にコピー

(Niuli Dafaは良いですね~)

使い方

matplotlibはスクリプトでも使えますが、ipythonで使うともっと華やかになります(–pylabを直接追加します)パラメータ(パッケージをインポートするプロセス)を回避でき、Matlab/Mathematica と同じ機能、即時入力、即時出力が得られます。個人的には、はっきり言ってMatlab/Mathematica の真似ではないかと感じていますが、確かに前者に比べてプログラムするのは便利です。

多くの場合、matplot は numpy パッケージと一緒に使用する必要があります。numpy パッケージについては、使用するときにのみ説明します。注意すべき点の 1 つは、numpy パッケージは通常次のようにインポートされることです:

import numpy as np
ログイン後にコピー

はそれに np というエイリアスを与えますが、これはほぼ慣例です。

Python または ipython で help(*見つけたい関数*) と入力するだけです (もちろん、最初にパッケージをインポートする必要があります)。

最初の画像

インポートする必要があるパッケージ:

import numpy as np
from pylab import *
ログイン後にコピー

最初の関数画像

X = np.linspace(-np.pi, np.pi, 256,endpoint=True)
C,S = np.cos(X), np.sin(X)
plot(X,C)
plot(X,S)
show()
ログイン後にコピー

matlab の基礎を持っている学生はよく知っているはずです。 。 。はい、これら 2 つのモジュールの組み合わせは matlab の使い方とほぼ同じです。 。

1. まず、np.linspace メソッドを使用して 配列 np.linspace方法生成一个数组X,这个数组是从$-pi$开始到$pi$的总共包含256个元素的数组,endpoint参数表示是否包含首尾端点(他的值是True或False,首字母要大写。。。。)。当然,这个数组就是一个普通的数组了,跟其他数组没有区别。

2、然后用np.cos()np.sin() を生成します。 X、この配列は、$-pi$ から $pi$ までの合計 256 個の要素を含む配列です。 endpoint パラメーターは、最初と最後のエンドポイントを含むかどうかを示します。 (値は True または False で、最初の文字は大文字にする必要があります。もちろん、この配列は単なる通常の配列であり、他の配列と変わりはありません。

2. 次に、np.cos() メソッドと np.sin() メソッドを使用して X 配列に作用し、X の各要素を計算し、結果を生成します。配列。 (反復プロセスの排除)。

3. 次に、pylab のプロット メソッドを呼び出します。最初のパラメーターは横座標配列、2 番目のパラメーターは縦座標配列です。その他のパラメーターについては、当面は説明しません。これにより、デフォルトのグラフが生成されます。 (すぐには表示されません)

4. もちろん、チャートを表示するには最後にshowメソッドを呼び出す必要があります。

5. 結果:

グラフの名前は Figure1 です。左下にいくつかの

ボタン

があり、右下隅にはマウスの現在の左側が表示されます。これもとても便利です。 チャートのレイアウトと座標分布

各チャートは Figure 内にあります。次のコマンドを使用して空の Figure を生成できます。パラメータ名を追加しました。パラメータ名に基づいて各パラメータを区別するため、C言語とは異なる種類の関数です。 figsize パラメータは図形の縦横比を表し、dpi は各部分の長さを表します。たとえば、ここでは画像が 640x480 であることを意味します。

コマンドを出力するとすぐにウィンドウが表示され、show コマンドを再度入力することなく、後続のすべてのプロット コマンドがすぐにこのウィンドウに表示されます。

Figure は複数のチャートを表示することもできます。次の関数を使用して Figure を分割できます:

figure(figsize=(8,6), dpi=80)
ログイン後にコピー

これにより、現在の Figure が 3 行 4 列のテーブルに分割され、6 番目のテーブルがアクティブになります。 2行目の3番目の写真です。今後のプロットはこのサブテーブル上に生成されます。これを置き換える必要がある場合は、サブプロット コマンドを再入力して新しい位置を決定できます。

さらに、チャートで表示される範囲に満足できない場合は、チャートの座標範囲を直接調整することもできます:

xlim(-4.0,4.0)
ylim(-1.0,1.0)
ログイン後にコピー

这就表示x轴的范围设置在-4到4,y轴的范围设置在-1到1。当然,如果是想相对的进行修改我们可以利用下numpy数组的min和max方法。比如X.min() 这样的东西。

如果对坐标显示的密度啊什么的不满意,我们也可以调节他的标注点:

xticks(np.linspace(-4,4,9,endpoint=True))
yticks(np.linspace(-1,1,5,endpoint=True))
ログイン後にコピー

对于xticks和yticks,我们实际上可以传入任意的数组,这里不过是为了方便而用numpy快速生成的等差数列。

当然,我们也可以给标注点进行任意的命名,像下面这样:

xticks([1,2,3,4,5],['one','two','three','four','five'])
ログイン後にコピー

效果也很好想象,就不贴图了。需要注意的是这里也可以支持LaTex语法,将LaTex引用在两个$之间就可以了。(关于LaTex)

这里也有个小窍门,就是如果想不显示标注的话,我们就可以直接给xticks赋一个空的数组。

更改色彩和线宽

我们可以在画plot的时候用如下方法指定他的颜色和线宽:

plot(X, C, color='#cadae3', linestyle='-',linewidth=1.3, marker='o', markerfacecolor='blue', markersize=12,)
ログイン後にコピー

同样,这里参数的顺序不重要,名字才重要。

color参数可以指定RGB的色相,也可以用一些默认的名字,比如red blue之类的。

linestyle参数则指定了线的样式,具体参照以下样式:

参数样式
‘-‘实线
‘–'虚线
‘-.'线-点
‘:'点虚线

linewidth参数指定折线的宽度,是个浮点数。

marker参数指定散点的样式,具体参照以下样式:

参数样式
‘.'实心点
‘o'圆圈
‘,'一个像素点
‘x'叉号
‘+'十字
‘*'星号
‘^' ‘v' ‘<' ‘>'三角形(上下左右)
‘1' ‘2' ‘3' ‘4'三叉号(上下左右)

markerfacecolor参数指定marker的颜色

markersize参数指定marker的大小

这样就基本上能够自定义任何的折线图、散点图的样式了。

移动轴线

这段有点小复杂,暂时不想具体了解奇奇怪怪的函数调用,姑且先记录下用法和原理:

ax = gca()
ax.spines[&#39;right&#39;].set_color(&#39;none&#39;)
ax.spines[&#39;top&#39;].set_color(&#39;none&#39;)
ax.xaxis.set_ticks_position(&#39;bottom&#39;)
ax.spines[&#39;bottom&#39;].set_position((&#39;data&#39;,0))
ax.yaxis.set_ticks_position(&#39;left&#39;)
ax.spines[&#39;left&#39;].set_position((&#39;data&#39;,0))
ログイン後にコピー

我们知道一张图有上下左右四个轴线,这里我们把右边和上边的轴线颜色调为透明,然后把下边设置到y轴数据为0的地方,把左边设置到x轴数据为0的地方。这样我们就能根据自己想要位置来调节轴线了。

比如下面这段官方的代码:

# -----------------------------------------------------------------------------
# Copyright (c) 2015, Nicolas P. Rougier. All Rights Reserved.
# Distributed under the (new) BSD License. See LICENSE.txt for more info.
# -----------------------------------------------------------------------------
import numpy as np
import matplotlib.pyplot as plt
plt.figure(figsize=(8,5), dpi=80)
ax = plt.subplot(111)
ax.spines[&#39;right&#39;].set_color(&#39;none&#39;)
ax.spines[&#39;top&#39;].set_color(&#39;none&#39;)
ax.xaxis.set_ticks_position(&#39;bottom&#39;)
ax.spines[&#39;bottom&#39;].set_position((&#39;data&#39;,0))
ax.yaxis.set_ticks_position(&#39;left&#39;)
ax.spines[&#39;left&#39;].set_position((&#39;data&#39;,0))
X = np.linspace(-np.pi, np.pi, 256,endpoint=True)
C,S = np.cos(X), np.sin(X)
plt.plot(X, C, color="blue", linewidth=2.5, linestyle="-")
plt.plot(X, S, color="red", linewidth=2.5, linestyle="-")
plt.xlim(X.min()*1.1, X.max()*1.1)
plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],
 [r&#39;$-\pi$&#39;, r&#39;$-\pi/2$&#39;, r&#39;$0$&#39;, r&#39;$+\pi/2$&#39;, r&#39;$+\pi$&#39;])
plt.ylim(C.min()*1.1,C.max()*1.1)
plt.yticks([-1, 0, +1],
 [r&#39;$-1$&#39;, r&#39;$0$&#39;, r&#39;$+1$&#39;])
plt.show()
ログイン後にコピー

显示的结果就是:

图例和注解

图例十分简单,下述代码就可以解决:

plot(X, C, color="blue", linewidth=2.5, linestyle="-", label="cosine")
plot(X, S, color="red", linewidth=2.5, linestyle="-", label="sine")
legend(loc=&#39;upper left&#39;)
ログイン後にコピー

在plot里指定label属性就好了,最后调用下legend函数来确定图例的位置,一般就是'upper left'就好了。

注解就有点麻烦了,要用到annotate命令,挺复杂的,暂时是在不想看,姑且贴一段完整的代码和效果图吧:

# -----------------------------------------------------------------------------
# Copyright (c) 2015, Nicolas P. Rougier. All Rights Reserved.
# Distributed under the (new) BSD License. See LICENSE.txt for more info.
# -----------------------------------------------------------------------------
import numpy as np
import matplotlib.pyplot as plt
plt.figure(figsize=(8,5), dpi=80)
ax = plt.subplot(111)
ax.spines[&#39;right&#39;].set_color(&#39;none&#39;)
ax.spines[&#39;top&#39;].set_color(&#39;none&#39;)
ax.xaxis.set_ticks_position(&#39;bottom&#39;)
ax.spines[&#39;bottom&#39;].set_position((&#39;data&#39;,0))
ax.yaxis.set_ticks_position(&#39;left&#39;)
ax.spines[&#39;left&#39;].set_position((&#39;data&#39;,0))
X = np.linspace(-np.pi, np.pi, 256,endpoint=True)
C,S = np.cos(X), np.sin(X)
plt.plot(X, C, color="blue", linewidth=2.5, linestyle="-", label="cosine")
plt.plot(X, S, color="red", linewidth=2.5, linestyle="-", label="sine")
plt.xlim(X.min()*1.1, X.max()*1.1)
plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],
  [r&#39;$-\pi$&#39;, r&#39;$-\pi/2$&#39;, r&#39;$0$&#39;, r&#39;$+\pi/2$&#39;, r&#39;$+\pi$&#39;])
plt.ylim(C.min()*1.1,C.max()*1.1)
plt.yticks([-1, +1],
  [r&#39;$-1$&#39;, r&#39;$+1$&#39;])
t = 2*np.pi/3
plt.plot([t,t],[0,np.cos(t)],
  color =&#39;blue&#39;, linewidth=1.5, linestyle="--")
plt.scatter([t,],[np.cos(t),], 50, color =&#39;blue&#39;)
plt.annotate(r&#39;$\sin(\frac{2\pi}{3})=\frac{\sqrt{3}}{2}$&#39;,
  xy=(t, np.sin(t)), xycoords=&#39;data&#39;,
  xytext=(+10, +30), textcoords=&#39;offset points&#39;, fontsize=16,
  arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))
plt.plot([t,t],[0,np.sin(t)],
  color =&#39;red&#39;, linewidth=1.5, linestyle="--")
plt.scatter([t,],[np.sin(t),], 50, color =&#39;red&#39;)
plt.annotate(r&#39;$\cos(\frac{2\pi}{3})=-\frac{1}{2}$&#39;,
  xy=(t, np.cos(t)), xycoords=&#39;data&#39;,
  xytext=(-90, -50), textcoords=&#39;offset points&#39;, fontsize=16,
  arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))
plt.legend(loc=&#39;upper left&#39;, frameon=False)
plt.savefig("../figures/exercice_9.png",dpi=72)
plt.show()
ログイン後にコピー

效果图:

还是十分高能的。。。

总结

【相关推荐】

1. Python免费视频教程

2. Python基础入门教程

3. Python在数据科学中的应用

以上が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)

XML形式を開く方法 XML形式を開く方法 Apr 02, 2025 pm 09:00 PM

ほとんどのテキストエディターを使用して、XMLファイルを開きます。より直感的なツリーディスプレイが必要な場合は、酸素XMLエディターやXMLSPYなどのXMLエディターを使用できます。プログラムでXMLデータを処理する場合、プログラミング言語(Pythonなど)やXMLライブラリ(XML.ETREE.ELEMENTTREEなど)を使用して解析する必要があります。

XML形式を美化する方法 XML形式を美化する方法 Apr 02, 2025 pm 09:57 PM

XMLの美化は、合理的なインデンテーション、ラインブレーク、タグ組織など、本質的に読みやすさを向上させています。原則は、XMLツリーを通過し、レベルに応じてインデントを追加し、テキストを含む空のタグとタグを処理することです。 PythonのXML.ETREE.ELEMENTTREEライブラリは、上記の美化プロセスを実装できる便利なchile_xml()関数を提供します。

XMLの変更にはプログラミングが必要ですか? XMLの変更にはプログラミングが必要ですか? Apr 02, 2025 pm 06:51 PM

XMLコンテンツを変更するには、ターゲットノードの正確な検出が必要であるため、プログラミングが必要です。プログラミング言語には、XMLを処理するための対応するライブラリがあり、APIを提供して、データベースの運用などの安全で効率的で制御可能な操作を実行します。

携帯電話用の無料のXMLからPDFツールはありますか? 携帯電話用の無料のXMLからPDFツールはありますか? Apr 02, 2025 pm 09:12 PM

モバイルには、単純で直接無料のXMLからPDFツールはありません。必要なデータ視覚化プロセスには、複雑なデータの理解とレンダリングが含まれ、市場のいわゆる「無料」ツールのほとんどは経験がありません。コンピューター側のツールを使用したり、クラウドサービスを使用したり、アプリを開発してより信頼性の高い変換効果を取得することをお勧めします。

携帯電話でXMLをPDFに変換するとき、変換速度は高速ですか? 携帯電話でXMLをPDFに変換するとき、変換速度は高速ですか? Apr 02, 2025 pm 10:09 PM

Mobile XMLからPDFへの速度は、次の要因に依存します。XML構造の複雑さです。モバイルハードウェア構成変換方法(ライブラリ、アルゴリズム)コードの品質最適化方法(効率的なライブラリ、アルゴリズムの最適化、キャッシュデータ、およびマルチスレッドの利用)。全体として、絶対的な答えはなく、特定の状況に従って最適化する必要があります。

携帯電話でXMLをPDFに変換する方法は? 携帯電話でXMLをPDFに変換する方法は? Apr 02, 2025 pm 10:18 PM

携帯電話でXMLをPDFに直接変換するのは簡単ではありませんが、クラウドサービスの助けを借りて実現できます。軽量モバイルアプリを使用してXMLファイルをアップロードし、生成されたPDFを受信し、クラウドAPIで変換することをお勧めします。クラウドAPIはサーバーレスコンピューティングサービスを使用し、適切なプラットフォームを選択することが重要です。 XMLの解析とPDF生成を処理する際には、複雑さ、エラー処理、セキュリティ、および最適化戦略を考慮する必要があります。プロセス全体では、フロントエンドアプリとバックエンドAPIが連携する必要があり、さまざまなテクノロジーをある程度理解する必要があります。

XMLをPDFに変換できるモバイルアプリはありますか? XMLをPDFに変換できるモバイルアプリはありますか? Apr 02, 2025 pm 08:54 PM

XMLをPDFに直接変換するアプリケーションは、2つの根本的に異なる形式であるため、見つかりません。 XMLはデータの保存に使用され、PDFはドキュメントを表示するために使用されます。変換を完了するには、PythonやReportLabなどのプログラミング言語とライブラリを使用して、XMLデータを解析してPDFドキュメントを生成できます。

推奨されるXMLフォーマットツール 推奨されるXMLフォーマットツール Apr 02, 2025 pm 09:03 PM

XMLフォーマットツールは、読みやすさと理解を向上させるために、ルールに従ってコードを入力できます。ツールを選択するときは、カスタマイズ機能、特別な状況の処理、パフォーマンス、使いやすさに注意してください。一般的に使用されるツールタイプには、オンラインツール、IDEプラグイン、コマンドラインツールが含まれます。

See all articles