麻豆黑色丝袜jk制服福利网站-麻豆精品传媒视频观看-麻豆精品传媒一二三区在线视频-麻豆精选传媒4区2021-在线视频99-在线视频a

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > 數據分析之繪圖和可視化

數據分析之繪圖和可視化

來源:千鋒教育
發布人:wjy
時間: 2022-08-12 15:04:55 1660287895

hi~~~ 我是宋宋,今天給大家分享的是數據分析的可視化部分。

### 簡介

信息可視化(也叫繪圖)是數據分析中最重要的?作之?。它可能是探索過程的?部分,例如,幫助我們找出異常值、必要的數據轉換、得出有關模型的idea等。

其實做 Python的數據可視化,可以使用的庫分別是 Matplotlib 、Seaborn 、Bokeh、 Plotly 、Pyecharts等。

Matplotlib是Python數據可視化庫中的泰斗,它已經成為python中公認的數據可視化工具,通過Matplotlib可以很方便的設計和輸出二維以及三維的數據,其提供了常規的笛卡爾坐標,極坐標,球坐標,三維坐標等,其輸出的圖片質量也達到了科技論文中的印刷質量,日常的基本繪圖更不在話下。

Matplotlib 是一個 Python 的 2D繪圖庫,通過 Matplotlib,開發者可以僅需要幾行代碼,便可以生成繪圖,直方圖,功率譜,條形圖,錯誤圖,散點圖等。

優勢:

> (1)能將數據進行可視化,更直觀的呈現
>
> (2)使數據更加客觀,更具說服力

在分享Matplotlib之前我們先了解以下幾個概念:

**畫板、畫紙的概念**

image01

我們知道畫畫時需要畫板和畫紙。在matplotlib中也是一個道理。

圖形在畫板(figure)中繪制完成,而畫板又由不同的畫布(紙)(axes)構成,具體的圖形構建時要指明畫板和畫布,否則默認一畫板一畫布。

##### 畫板(figure)

畫板存在的意義:

- 控制圖像的比例情況(大小)
- 保存圖像

創建一個畫板

> plt.figure(
> num=None, 用于指定在畫板上,放幾個畫布
> figsize=None, (寬度, 高度)
> dpi=None, 圖像的分辨率
> facecolor=None, 背景色
> edgecolor=None, 邊界顏色
> frameon=True,
> FigureClass,
> clear=False,
> **kwargs,
> linewidth
> )

##### 畫布(axes)

一個坐標系就是一個畫布,就是一個圖,一個畫板上可以有多個坐標系

畫布的創建
畫布要創建在畫板上
fig.add_subplot(nrows, ncols, index)
nrows將畫板分為幾行,ncols將畫板分為幾列,index選取使用哪一個被劃分的畫板

> add_subplot(nrows, ncols, index, \**kwargs)
> add_subplot(pos, **kwargs)
> add_subplot(ax)
> add_subplot()

畫板與畫布的關系

屏幕快照 2021-08-24 下午5.10.29

matplotlib圖標的基本組成

- 畫板figure 呈現出來的坐標系
- 繪圖區域axes 【畫布】
- x軸和y軸的水平垂直軸線 以及 軸標簽
- 軸線上的刻度 以及 對應的刻度標簽
- 畫布標題
- 圖例

### 如何使用繪圖包Matplotlib?

matplotlib的基本要素:

```
# 導入pyplot和matplotlib模塊

import matplotlib as mpl

from matplotlib import pyplot as plt

%matplotlib inline # 繪制的圖片在當前文檔顯示
```

默認一畫板一畫紙,我們也可以自己定義畫板figure和畫布axes,添加順序是:

> 1. 定義一個figure對象
> 2. 給figure對象添加subplot

比如:

```python
import numpy as np
import matplotlib as mpl
from matplotlib import pyplot as plt

%matplotlib inline

fig = plt.figure()
# 指定切分區域的位置
ax1 = fig.add_subplot(2,2,1)
ax2 = fig.add_subplot(2,2,2)
ax3 = fig.add_subplot(2,2,3)
ax4 = fig.add_subplot(2,2,4)

random_arr = np.random.randn(100)
plt.plot(random_arr)

plt.show()
```

屏幕快照 2021-08-24 下午4.22.55

大家可以發現在最后一個畫布上顯示了圖像,但是前面三個沒有顯示出來,原因是此時的plt是有上下文的,所謂上下文就是在ax2和ax3之間使用plt.plot()進行繪制則繪制的圖形是ax2這個畫紙的。即在哪個畫紙下面執行畫圖就會繪制在誰上面,前提是下一個畫布創建之前。所以如果在ax2和ax4上畫圖也可以改成如下代碼,

```
import numpy as np
import matplotlib as mpl
from matplotlib import pyplot as plt

%matplotlib inline

fig = plt.figure()
random_arr = np.random.randn(100)
# 指定切分區域的位置
ax1 = fig.add_subplot(2,2,1)
ax2 = fig.add_subplot(2,2,2)
plt.plot(random_arr)
ax3 = fig.add_subplot(2,2,3)
ax4 = fig.add_subplot(2,2,4)
plt.plot(random_arr)
plt.show()
```

屏幕快照 2021-08-24 下午4.28.28

注意: 如果繪圖區域顯示的圖像比較小,可以結合參數figsize=(寬度,高度)進行設定。

當然也可以使用畫布axes對象進行繪制,比如下面代碼:

```
# 省略導入,同上
...
fig = plt.figure(figsize=(11,7)) # 畫板的大小 設置的橫向和縱向的值 單位是英寸 可以表示水平和垂直的縮放
random_arr = np.random.randn(100)
# 指定切分區域的位置
ax1 = fig.add_subplot(2,2,1)
ax2 = fig.add_subplot(2,2,2)
ax3 = fig.add_subplot(2,2,3)
ax4 = fig.add_subplot(2,2,4)
random_arr = np.random.randn(100)
ax1.plot(random_arr)
random_arr = np.random.randn(100)
ax2.plot(random_arr)
random_arr = np.random.randn(100)
ax3.plot(random_arr)
random_arr = np.random.randn(100)
ax4.plot(random_arr)
plt.show()
```

屏幕快照 2021-08-24 下午5.08.10

其中的add_subplot(self, *args, **kwargs) 表示向figure添加一個Axes作為一subplot布局的一部分。

add_subplot()方法本質上做了兩件事:

1. 將整個Figure區域劃分為Row * col的網格;
2. 在網格的指定格子(索引號)中創建一個Axes

add_subplot()網格有兩種定義方式:

第一種是用3個參數,分別代表網格的,行數 nrows, 列數 ncols, 索引號index。它們都是位置參數。這種是第1種調用簽名形式。

第二種是用一個3位數的整數,如,224,第一個2表示2行,第二個2表示2列,第3位上的4表示第4個格子。這就是第二種調用簽名形式,pos為224,也是位置參數。
比如說創建一個2行2列的布局,繪圖在第四個axes,注意:2*2的網格是虛擬的,起一個定位的作用

屏幕快照 2021-08-24 下午5.14.04

**小結:**

1. figure就是一個矩形容器(頂層容器),可以再劃分為小方格,每個方格就是一個subplot,即子繪圖區。
2. 一個圖形中可以有多個subplot,這些subplot又可以被看作一個整體,有一些屬性如整個subplot的位置、內部(單個subplot之間)的間距等,這些屬性保存在figure.SubplotParams類中。可以通過Figure的subplotpars參數來修改這些屬性。
3. 子圖使用了subplot,而不是subfigure。fiugre僅是一個矩形容器,而plot則是具體的圖形元素了,所以subplot會自動創建一個Axes,這個Axes是屬于特定subplot的。

### 畫布的設置

創建好了畫布之后,我們就可以對畫布進行設置,比如添加標題、坐標軸、設置坐標軸刻度、圖例等

#### artist操作

**設置畫布標題**

> axes.set_title(label)
> label,
> fontdict=None,
> loc=None,
> pad=None,
> *,
> y=None,
> **kwargs,
> )
> 可以設置標題的位置,樣式

**設置坐標軸標簽**

> axes.set_xlabel()
> axes.set_ylabel(
> ylabel, # 坐標軸標簽名
> fontdict=None, # 字體大小
> labelpad=None,
> *,
> loc=None, # 位置{'left', 'center', 'right'}
> **kwargs,
>
> rotation, # 旋轉
> color, # 顏色
> )

**開啟和關閉坐標軸**

> axes.set_axis_on()
> axes.set_axis_off()

**設置坐標軸范圍【相當于只看一部分】**

> axes.axis([xmin, xmax, ymin, ymax])
>
> axes.set_xlim(min,max)
> axes.set_ylim(min,max)

**設置坐標軸刻度**

> axes.set_xticks([float, float])
> axes.set_yticks(
> ticks=[float, float], 刻度的位置會根據數據的范圍以及數據本身設置刻度的位置
> labels=['',''],
> rotation,
> fontsize,
> color
> )

**設置網格**

> axes.grid(b=None, which='major', axis='both', **kwargs)
> axes.grid(True
> )

**設置圖例**
在繪圖操作中設置label參數,再調用圖例顯示方法

在圖例方法中傳入字符串列表

> axes.legend(handles, labels, loc)
> ** loc:圖例位置
> ** labels:圖例標簽名稱
> ** handles:

> =============== =============
> Location String Location Code
> =============== =============
> 'best' 0
>
> 'upper right' 1
> 'upper left' 2
> 'lower left' 3
> 'lower right' 4
> 'right' 5
> 'center left' 6
> 'center right' 7
> 'lower center' 8
> 'upper center' 9
> 'center' 10
> =============== =============

案例:

```

fig = plt.figure(figsize=(10,5))
x = np.linspace(0, np.pi * 2, 100)
y = np.sin(x)
ax1 = fig.add_subplot(1,2,1)
ax1.set_title('正余弦波', fontsize=20, fontweight='bold', horizontalalignment='left', verticalalignment='bottom') # 默認是不支持漢字的
ax1.plot(x, y)
ax1.plot(x, np.cos(x))
ax1.legend(['sin(x)', 'cos(x)'],loc='upper right')
ax2 = fig.add_subplot(1,2,2)

random_arr = np.random.randn(100)
ax2.plot(random_arr)
ax2.set_title('標準正態分布')
```

設置的標題是中文的,因為要想支持中文可以添加如下代碼在執行之前:

```
plt.rcParams['font.sans-serif'] = ['Simhei']
# 中文情況下 負號顯示會有異常 所以還需要設置負號的操作
# 'axes.unicode_minus'
plt.rcParams['axes.unicode_minus'] = False
# 設置的是點的標記 默認是就是None 不顯示
plt.rcParams['lines.marker'] = 'None'
```

屏幕快照 2021-08-24 下午5.42.10

當然上面的操作也可以在上下文上完成,結果是一樣的。只不過去掉了set_title()中的set_直接使用plt繪制。其他屬性也是一樣的。即:

```
fig = plt.figure(figsize=(10,5))
x = np.linspace(0, np.pi * 2, 100)
y = np.sin(x)
ax1 = fig.add_subplot(1,2,1)
plt.title('正余弦波', fontsize=20, fontweight='bold', horizontalalignment='left', verticalalignment='bottom') # 默認是不支持漢字的
plt.plot(x, y)
plt.plot(x, np.cos(x))
plt.legend(['sin(x)', 'cos(x)'],loc='upper right')
ax2 = fig.add_subplot(1,2,2)

random_arr = np.random.randn(100)
plt.plot(random_arr)
plt.title('標準正態分布')
```

 

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
主站蜘蛛池模板: 色多多网站入口| 制服丝袜中文字幕在线观看| 国产小视频网站| 夫醉酒被公侵犯的电影中字版| 再深一点灬舒服灬太大了| 久久久久亚洲精品中文字幕| 男人扒开女人的腿做爽爽视频| 免费看黄色a级片| 亚洲一区二区影院| 女博士梦莹凌晨欢爱| 久久番号库| 国产成人在线电影| 亚洲成年人专区| 快点cao我要被cao烂了| 亚洲国产天堂久久综合2261144| 国产欧美精品一区二区色综合| 国产午夜精品一区二区三区不卡| 97se色综合一区二区二区| 国产影片中文字幕| 色男人影院| 中文字幕在线视频网站| 8090韩国理伦片在线天堂| 日本中文字幕一区二区高清在线| 亚洲成av人片在线观看| 天天躁夜夜躁狠狠躁2021| 美国式的禁忌80版| 高清videosgratis欧洲69| 强乱中文字幕在线播放不卡| 久久综合久久综合九色| 波多野结衣女同| 国产精品久久久久久一区二区三区| 卡一卡二卡三精品| 天天5g天天爽永久免费看欧美| 日本欧美视频在线观看| 穿长筒袜的有夫之妇hd中文| 国产理论视频在线观看| 精品国产污污免费网站| 免费大黄网站| eeuss影院www在线观看免费| 夫妇交换性3中文字幕k8| 老少交欧美另类|