Pythonデータの可視化-matplotlibの基本

matplotlibを使用してプロットする

予防:

  1. デフォルトのpyplotフォントは中国語の文字の表示をサポートしていないため、font.sans-serifパラメーターを使用して描画する場合も、フォントを変更して、グラフィックが中国語を正常に表示できるようにする必要があります。同時にフォントの変更に使用すると、Zhongouによって軸に与えられた文字の一部が表示されなくなるため、axes.unicode.minusパラメーターを同時に変更する必要があります
plt.rcParams['font.sans-serif']="SimHei"
plt.rcParams['axes.unicode_minus']=False
  1. 描画スタイルの設定
    matplotlibを使用して描画する場合
    システムで
    ここに画像の説明を挿入プリセットされ描画スタイルを設定できます。システムで使用できるすべての描画スタイルを表示するには、plt.style.availableステートメントを使用します。プリセットスタイルの使用:plt.style.use( "ggplot ")

1.キャンバスを作成し、サブグラフを作成する

空白のキャンバスを作成し、キャンバス全体を複数の部分に分割するかどうかを選択できます。これは、同じ絵画に複数のグラフィックスを描くのに便利です。

関数名 関数
plt.figure 空白のキャンバスを作成します。キャンバスのサイズとピクセルを指定できます
figure.add_subplot サブ画像を作成して選択します。行、列、および選択した画像の数を指定できます
  • 関数:matplotlib.pyplot.figure()1. matplotlib
    によって描画された画像はすべて図オブジェクトに配置されます
    2.パラメーターfiguresizeは画像のサイズとアスペクト比を設定するために使用されます
  • subplot関数:plt.subplot(A、B、C)
    1.A、Bは、分割された画像ウィンドウA Bの領域を表しますつまり、行列 2. cは、操作対象として現在選択されている領域を示します

2.キャンバスコンテンツを追加する

2番目の部分は、図面の主要部分です。その中でも、タイトル、軸名、グラフィックスの追加の手順は並行しており、順序はありません。最初にグラフィックスを描画したり、最初にさまざまなラベルを追加したりできます。

関数名 関数
plt.title タイトルを現在のグラフィックに追加します。タイトル、位置、色、フォント、その他のパラメーターを指定できます
plt.xlable 現在のグラフにX軸の名前を追加します。位置、色、フォント、その他のパラメーターを指定できます
plt.ylable 現在のグラフにy軸の名前を追加します。位置、色、フォント、その他のパラメーターを指定できます
plt.xlim 現在のx軸の範囲を指定します。数値の範囲のみを決定でき、文字列識別子は使用できません
plt.ylim 現在のy軸の範囲を指定します。数値の範囲のみを決定でき、文字列識別子は使用できません
plt.xticks X軸スケールの数と値を指定します
plt.yticks y軸スケールの数と値を指定します
plt.legend 現在のグラフの凡例を指定します。現在の凡例のサイズ、位置、ラベルを指定できます

3. pyplotの動的rcパラメーターを設定します

Pyplotはrc構成ファイルを使用して、rc構成またはrcパラメーターと呼ばれるグラフィックスのさまざまなデフォルト属性をカスタマイズします。ビューウィンドウのサイズ、線幅、色、スタイル、軸など、ほとんどすべてのデフォルト属性をpyplotで制御できます。 、グリッドプロパティ、テキスト、フォントなど

3.1行に一般的に使用されるrcパラメーター
rcパラメータ名 説明
lines.linewidth 線幅 0から10の間の値を取ります。デフォルトは1.5です。
lines.linestyle 線のスタイル 「-」、「–」、「。」、「:」の4種類があり、デフォルトは「-」です。
lines.marker ライン上のポイントの形状 「o」、「D」、「h」、「。」、「、」、「S」の20種類以上が使用可能で、デフォルトはNoneです。
lines.markersize ポイントサイズ 0から10の間の値を取ります。デフォルトは1です。
3.2一般的な線種
線種の値 意義 線種の値 意義
- 実線 -。 点線
長い点線 短い破線

4.グラフィック描画

4.1散布図

散布図は、散布点分布図とも呼ばれ、1つの特徴が横座標で、もう1つの特徴が縦座標であるグラフです。座標点の分布は、特徴間の統計的関係を反映するために使用されます。
値はグラフのさまざまな位置の点で表され、カテゴリはグラフのさまざまなマークで表され、通常、カテゴリ間でデータを比較するために使用されます。

  • 散布図関数:matplotlib.pyplot.scatter(x、y、s = None、c = None、marker = None、alpha = None、** kwargs)、共通パラメーターは次のように説明されます:
パラメータ名 説明
x、y X軸とY軸の対応するデータを表す受信配列。デフォルトはありません。
s 数値または1次元配列を受け取り、ポイントのサイズを指定します。1次元配列で渡す場合、各ポイントのサイズを意味します。デフォルトはNoneです。
c 数値または1次元配列を受け取り、ポイントの色を指定します。1次元配列が渡された場合は、各ポイントの色を意味します。デフォルトはNoneです。
マーカー 描画されたポイントのタイプを表す特定の文字列を受け取ります。デフォルトはNoneです。
アルファ ポイントの透明度を示す0〜1時間を受け取ります。デフォルトは[なし]です
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']="SimHei"
plt.rcParams['axes.unicode_minus']=False
data1 = pd.DataFrame({
    
    "姓名":["韩梅梅","李雷","Lucy","Lily","Jim","小明","Amy"],
                     "身高":[160,170,163,165,178,182,168],
                     "体重":[48,55,52,50,60,58,49]})
#绘制散点图查看身高和体重之间的关系
figure = plt.figure(figsize=(6,5))
plt.scatter(data1["身高"],data1["体重"],color="b",marker="s")
plt.xlabel("height(cm)")
plt.ylabel("weight(kg)")
plt.title("身高体重关系图")

ここに画像の説明を挿入

4.2折れ線グラフを描く

折れ線グラフは、データポイントを順番に接続するグラフです。散布図をx軸座標順に接続するグラフと見なすことができます。折れ線グラフの主な機能は、従属変数yと独立変数xを表示することです。この傾向は、(一般的なスケール設定に従って)時間とともに変化する連続データに最適です。同時に、数量の違いと成長トレンドの変化を見ることができます。

  • プロット関数:
    matplotlib.pyplot.plot(* args、** kwargs)
    一般的に使用されるパラメーターと説明を次の表に示します。
パラメータ名 説明
x、y 受信配列。x軸とy軸に対応するデータを示します。デフォルトなし
特定の文字列を受け取ります。線の色を指定します。デフォルトはなしです
ラインスタイル 特定の文字列を受け取ります。線種を指定してください。デフォルトは "-"です
マーカー 特定の文字列を受け取ります。描画されるポイントのタイプを示します。デフォルトはなしです
アルファ 10進数の0-1を受け入れます。ポイントの透明度を示します。デフォルトは「なし」です。
data_x = list(range(1,1000))
data_y = [10]
for i in range(998):
    data_y.append(data_y[i]+np.random.randint(-1,2))
plt.plot(data_x,data_y)

ここに画像の説明を挿入

5.内部データの分布と機能の分散を分析する

5.1ヒストグラムを描く

直方图是统计报告图的一种,一般用于表示连续型数据的分布情况,一般用横轴表示数据分组,纵轴表示属于该组取值范围的样本数量或者占比。
用直方图可以比较直观的看出产品质量特性的分布状态,便于判断其总体质量分布情况。直方图可以发现分布表无法发现的数据模式、样本的频率分布和总体的分布。

  • hist函数:matplotlib.pyplot.hist(x,y)
    其中:
    x:待绘制直方图的一维数组
    y:可以是整数,表示均匀分为n组,也可以是
#正态分布数据
import random
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']="SimHei"
plt.rcParams['axes.unicode_minus']=False
mu,sigma = 100,15
x = mu+sigma*np.random.randn(10000)
#the histgram of data
n,bins,pathces = plt.hist(x,50,density=0,facecolor="g",alpha=0.75)
plt.title("Histogram of IQ")
plt.xlabel("Smart")
plt.ylabel("频数")
plt.text(60,500,r"$\mu=100,\ \sigma=15$")
plt.axis=([40,160,0,600])
plt.grid(True)

ここに画像の説明を挿入
注意:plt.hist()函数中的density参数是布尔类型,默认为None,当其值为False时,y轴表示频数,当其值为True时,y轴表示频率

5.2 绘制条形图

条形图是统计报告图的一种,由一系列高低不等的纵向条纹或线段表示类别型数据分布情况,一般用横轴表类别,纵轴表示该样本数量或占比。
用条形图可以比较直观的看出产品质量特性的分布状态,便于判断其总体质量情况,

  • bar()函数:plt.bar(left,height,width=0.8,bottom=None,hold=None,data=None,**kwargs)
  • 常用参数说明:
参数名称 说明
left 接收array,表示x轴数据,无默认
height 接收array,表示x轴所代表数据的数量。无默认
width 接收0-1之间的float,指定条形图的宽度,默认为0.8
color 接收特定string或者包含颜色字符串的array,表示条形图的颜色,默认为None
grades = ["高一","高二","高三"]
values = [879,517,725]
plt.bar(grades,values,color="b",width=.4)
plt.title("全校人数")

ここに画像の説明を挿入- 组合图示例:

year = ["2017","2018","2019","2020"]
sales = np.random.rand(4)*1000000
conv = np.random.rand(4)
fig,ax = plt.subplots(figsize=(12,8))
ax1 = ax.twinx()#创建次坐标轴

ax.bar(year,sales,color="skyblue")
ax1.plot(year,conv,"-o",color = "y")

ここに画像の説明を挿入

5.3创建饼图

饼图是将各项的大小与各项的比例显示在一张图中,以每一部分的大小来确定每一项的占比。
饼图可以比较清楚的反映出部分与部分、部分与整体之间的比例关系,易于显示每组数据相对于整体数据的大小,且比较直观。

  • pie()函数:
matplotlib.pyplot.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=None, radius=None,)

ここに画像の説明を挿入

# 频次或频率
data = [1, 2, 3, 4, 5]  # 各类别占比
# 各类别标签
label = ['猫', '狗', '牛', '羊', '马']
# 每个类别要绘制的颜色
color = ['lightblue', 'lightgreen', 'lightyellow', 'pink', 'orange']  # 各类别颜色
explode = (0, 0, 0, 0, 0.1)  # 各类别的偏移半径
plt.pie(data,colors = color,labels=label,shadow=True,autopct="%.2f%%",explode=explode)

ここに画像の説明を挿入

5.4箱ひげ図を描く

ボックスプロットは、特に一般的に使用される統計で、データの場所と分散に関する重要な情報を提供し、特に異なる特性を示す場合、データの場所と分散に関する重要な情報を提供します。分散の程度の違い。
箱ひげ図で使用される5つの統計は、最小、下位四分位、中央値、上位四分位、および最大で、データが対称的で分散していることがおおまかにわかります。度などの情報を使用して、複数のサンプルを比較できます。

  • ボックスプロット関数
matplotlib.pyplot.boxplot(x, notch=None, sym=None, vert=None, whis=None, positions=None, widths=None, patch_artist=None,meanline=None, labels=None,)

共通パラメーター:
ここに画像の説明を挿入

5.5レーダーチャート

レーダーチャートは、変数を3次元以上で表示するのに適しています。レーダーチャートは、多変量データを、同じ点から始まる軸に3つ以上の変数を表示するチャートの形式で表示する方法です。相対位置と角度は通常意味がありません。
レーダーチャートは、どの変数に類似した値があるか、および変数間に異常値があるかどうかを確認するのに非常に役立ちます。レーダーチャートは、データセットでどの変数のスコアが高いか低いかを確認するためにも使用できるため、パフォーマンス関連のデータの表示に非常に適しており、ランキング、評価、コメントなどのデータの表示によく使用されます。

fig = plt.figure(figsize=(10,5))
# 玩家数据(0-10分)
data4 = np.array([[3.2, 1.7, 1.9, 2.5, 8.0],
                  [8.2, 6.9, 5.4, 1.7, 3.6],
                  [5.2, 4.2, 8.7, 0.5, 1.7],
                  [7.4, 5.4, 4.1, 3.5, 6.2]])
n,k = data4.shape#获取数组的行列信息
# 各维度名称
names = ['打钱速度', '击杀助攻', '输出能力', '控制时长', '吸收伤害']
ax = fig.add_subplot(111,polar=True)#设置极坐标
angles = np.linspace(0,2*np.pi,k,endpoint=False)#创建等差数列绘制周长
angles = np.concatenate((angles,[angles[0]]))#使周长闭合,即在数列的最后增加一个数字,该数字为数列开始的数字
Linestyle = ['bo-', 'ro:', 'gD--', 'yv-.']  # 点线形状
Fillcolor = ['b', 'r', 'g', 'y']  # 填充颜色\点线颜色
for i in range(n):
    data = np.concatenate((data4[i],[data4[i][0]]))#每一组数据都让其闭合,形成一个封闭的图形
    data = data4[i]
    ax.plot(angles,data,Linestyle[i],linewidth = 2)
    ax.fill(angles,data,facecolor=Fillcolor[i],alpha=0.25)
ax.set_thetagrids(angles[:-1] * 180/np.pi, names)  # 显示类别名字
ax.set_title("玩家能力值对比图", va='bottom')  # 设定标题
ax.set_rlim(0, 11)  # 设置各指标的最终范围
ax.grid(True)  # 显示网格

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/ava_zhang2017/article/details/108497056