欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python之Matlibplot畫圖功能演示過程

 更新時(shí)間:2023年09月13日 09:04:05   作者:大魚-瓶邪  
這篇文章主要介紹了Python之Matlibplot畫圖功能演示過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Python Matlibplot畫圖功能演示

Matplotlib 是 Python 的一個(gè)繪圖庫。

它包含了大量的工具,你可以使用這些工具創(chuàng)建各種圖形,包括簡單的散點(diǎn)圖,正弦曲線,甚至是三維圖形。

使用之前先導(dǎo)入

#!/usr/bin/env python
# encoding: utf-8
"""
@Company:華中科技大學(xué)電氣學(xué)院聚變與等離子研究所
@version: V1.0
@author: Victor
@contact: 1650996069@qq.com or yexin@hust.edu.cn 2018--2020
@software: PyCharm
@file: PlotByMatlibplot.py
@time: 2018/9/16 15:18
@Desc:講解一些matlibplot的使用
"""
# 導(dǎo)入相關(guān)模塊
import matplotlib.pyplot as plt
import numpy as np
##############################畫一個(gè)簡單的圖形#####################################
# 首先通過 np.linspace 方式生成 x,
# 它包含了 50 個(gè)元素的數(shù)組,這 50 個(gè)元素均勻的分布在 [0, 2*pi] 的區(qū)間上。然后通過 np.sin(x) 生成 y。
x = np.linspace(0,2*np.pi,50)
y = np.sin(x)
#有了 x 和 y 數(shù)據(jù)之后,我們通過 plt.plot(x, y) 來畫出圖形,并通過 plt.show() 來顯示。
plt.plot(x,y)
plt.show()
#################################在一個(gè)畫板里繪制多個(gè)圖############################
plt.plot(x, y)
plt.plot(x, y**3)
plt.show()
#繪制出圖形之后,我們可以自己調(diào)整更多的樣式,比如顏色、點(diǎn)、線。
plt.plot(x, y, 'y*-')
plt.plot(x, y**3, 'm--')#設(shè)置樣式時(shí),就是增加了一個(gè)字符串參數(shù),比如 'y*-' ,其中 y 表示黃色,* 表示 星標(biāo)的點(diǎn),- 表示實(shí)線。
plt.show()

###############################設(shè)置 figure和標(biāo)題以及其他圖列,注釋屬性######################################
# 可以認(rèn)為Matplotlib繪制的圖形都在一個(gè)默認(rèn)的 figure 中,當(dāng)然了,
# 你可以自己創(chuàng)建 figure,好處就是可以控制更多的參數(shù),常見的就是控制圖形的大小,這里創(chuàng)建一個(gè) figure,設(shè)置大小為 (8, 4)
plt.figure(figsize=(8, 4))
plt.plot(x, y)
plt.plot(x, y*2)
plt.title("cos(x) & cos(x)*2")
#設(shè)置坐標(biāo)軸的刻度,范圍
plt.xlim((0, 2*np.pi))
plt.ylim((-2, 2))
plt.xlabel('X')
plt.ylabel('Y')#通過 xlim 和 ylim 來設(shè)限定軸的范圍,通過 xlabel 和 ylabel 來設(shè)置軸的名稱
#我們也可以通過 xticks 和 yticks 來設(shè)置軸的刻度
#plt.xticks((0, np.pi * 0.5, np.pi, np.pi * 1.5, np.pi * 2))
###設(shè)置 label 和 legend
#設(shè)置 label 和 legend 的目的就是為了區(qū)分出每個(gè)數(shù)據(jù)對(duì)應(yīng)的圖形名稱。
plt.plot(x, y, label="cos(x)")
plt.plot(x, -y*2, label="2cos(x)")
# plt.legend()
plt.legend(loc='best')
#####添加注釋######
# 需要對(duì)特定的點(diǎn)進(jìn)行標(biāo)注,我們可以使用 plt.annotate 函數(shù)來實(shí)現(xiàn)。
#
# 這里我們要標(biāo)注的點(diǎn)是 (x0, y0) = (π, 0)。
#
# 我們也可以使用 plt.text 函數(shù)來添加注釋。
x0 = np.pi
y0 = 0
# 畫出標(biāo)注點(diǎn)
plt.scatter(x0, y0, s=50)
plt.annotate('sin(np.pi)=%s' % y0, xy=(np.pi, 0), xycoords='data', xytext=(+30, -30),
             textcoords='offset points', fontsize=16,
             arrowprops=dict(arrowstyle='->', connectionstyle="arc3,rad=.2"))
# 對(duì)于 annotate 函數(shù)的參數(shù),做一個(gè)簡單解釋:
#
# 'sin(np.pi)=%s' % y0 代表標(biāo)注的內(nèi)容,可以通過字符串 %s 將 y0 的值傳入字符串;
# 參數(shù) xycoords='data' 是說基于數(shù)據(jù)的值來選位置;
# xytext=(+30, -30) 和 textcoords='offset points' 表示對(duì)于標(biāo)注位置的描述 和 xy 偏差值,即標(biāo)注位置是 xy 位置向右移動(dòng) 30,向下移動(dòng)30;
# arrowprops 是對(duì)圖中箭頭類型和箭頭弧度的設(shè)置,需要用 dict 形式傳入。
plt.text(0.5, -0.25, "sin(np.pi) = 0", fontdict={'size': 18, 'color': 'r'})
plt.show()

畫子圖
##############################畫一個(gè)簡單的圖形#####################################
# 首先通過 np.linspace 方式生成 x,
# 它包含了 50 個(gè)元素的數(shù)組,這 100 個(gè)元素均勻的分布在 [0, 50] 的區(qū)間上
x = np.linspace(0,50,100)
############################使用子圖##############################################
# 將多張子圖展示在一起,可以使用 subplot() 實(shí)現(xiàn)。即在調(diào)用 plot() 函數(shù)之前需要先調(diào)用 subplot() 函數(shù)。
# 該函數(shù)的第一個(gè)參數(shù)代表子圖的總行數(shù),第二個(gè)參數(shù)代表子圖的總列數(shù),第三個(gè)參數(shù)代表活躍區(qū)域。
ax1 = plt.subplot(2, 2, 1) # (行,列,活躍區(qū))
plt.plot(x, np.sin(x), 'r')
ax2 = plt.subplot(2, 2, 2, sharey=ax1) # 與 ax1 共享y軸
plt.plot(x, 2 * np.cos(x), 'g')
ax3 = plt.subplot(2, 2, 3)
plt.plot(x, np.tan(x), 'b')
ax4 = plt.subplot(2, 2, 4, sharey=ax3) # 與 ax3 共享y軸
plt.plot(x, 2 * np.sin(x), 'y')
#subplot(2, 2, x) 表示將圖像窗口分為 2 行 2 列。x 表示當(dāng)前子圖所在的活躍區(qū)
plt.show()

############################調(diào)整子圖大小的位置##################################
#上面的每個(gè)子圖的大小都是一樣的。有時(shí)候我們需要不同大小的子圖。比如將上面第一張子圖完全放置在第一行,其他的子圖都放在第二行。
ax1 = plt.subplot(2, 1, 1) # (行,列,活躍區(qū))
plt.plot(x, np.sin(x), 'r')
ax2 = plt.subplot(2, 3, 4)
plt.plot(x, 2 * np.sin(x), 'g')
ax3 = plt.subplot(2, 3, 5, sharey=ax2)
plt.plot(x, np.cos(x), 'b')
ax4 = plt.subplot(2, 3, 6, sharey=ax2)
plt.plot(x, 2 * np.cos(x), 'y')
# plt.subplot(2, 1, 1) 將圖像窗口分為了 2 行 1 列, 當(dāng)前活躍區(qū)為 1。
# 使用 plt.subplot(2, 3, 4) 將整個(gè)圖像窗口分為 2 行 3 列, 當(dāng)前活躍區(qū)為 4。
#
# 解釋下為什么活躍區(qū)為 4,因?yàn)樯弦徊街惺褂?plt.subplot(2, 1, 1) 將整個(gè)圖像窗口分為 2 行 1 列, 第1個(gè)小圖占用了第1個(gè)位置,
# 也就是整個(gè)第1行. 這一步中使用 plt.subplot(2, 3, 4) 將整個(gè)圖像窗口分為 2 行 3 列,
# 于是整個(gè)圖像窗口的第1行就變成了3列, 也就是成了3個(gè)位置, 于是第2行的第1個(gè)位置是整個(gè)圖像窗口的第4個(gè)位置。
plt.show()

###############散點(diǎn)圖###################
k = 500
x = np.random.rand(k)
y = np.random.rand(k)
size = np.random.rand(k) * 50 # 生成每個(gè)點(diǎn)的大小,每個(gè)數(shù)據(jù)點(diǎn)生成控制大小的數(shù)組 size
colour = np.arctan2(x, y) # 生成每個(gè)點(diǎn)的顏色大小,每個(gè)數(shù)據(jù)點(diǎn)生成控制顏色的數(shù)組 colour
plt.scatter(x, y, s=size, c=colour)
plt.colorbar() # 添加顏色欄
plt.show()

#####################柱狀圖#############
k = 10
x = np.arange(k)
y = np.random.rand(k)
plt.bar(x, y) # 畫出 x 和 y 的柱狀圖
# 增加數(shù)值
for x, y in zip(x, y):
    plt.text(x, y , '%.2f' % y, ha='center', va='bottom')
    # 通過
    # plt.text
    # 標(biāo)注數(shù)值,設(shè)置參數(shù)
    # ha = 'center'
    # 橫向居中對(duì)齊,設(shè)置
    # va = 'bottom'
    # 縱向底部(頂部)對(duì)齊
plt.show()

###################解決Matplotlib 中文會(huì)亂碼問題#################
x = ['南京', '上海', '成都', '香港']
y = [60600, 53000, 50400, 52000]
plt.plot(x, y)
plt.title("中文亂碼")
plt.show()

#####其實(shí)只需要配置下后臺(tái)字體即可
plt.rcParams['font.sans-serif']=['SimHei'] #用來正常顯示中文標(biāo)簽
plt.rcParams['axes.unicode_minus']=False #用來正常顯示負(fù)號(hào)
plt.title("中文正常")
plt.plot(x, y)
plt.show()

后續(xù)其他技巧繼續(xù)更新。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python繪制驚艷的可視化動(dòng)圖的示例代碼

    Python繪制驚艷的可視化動(dòng)圖的示例代碼

    今天小編給大家介紹一款可視化模塊,使用它可以繪制出十分驚艷的動(dòng)圖效果。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-04-04
  • Python中Generators教程的實(shí)現(xiàn)

    Python中Generators教程的實(shí)現(xiàn)

    本文主要介紹了Python中Generators教程的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • 超詳細(xì)注釋之OpenCV dlib實(shí)現(xiàn)人臉采集

    超詳細(xì)注釋之OpenCV dlib實(shí)現(xiàn)人臉采集

    這篇文章主要介紹了OpenCV dlib實(shí)現(xiàn)人臉采集,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • Python使用struct庫的用法小結(jié)

    Python使用struct庫的用法小結(jié)

    struct模塊執(zhí)行Python值和以Python?bytes表示的C結(jié)構(gòu)體之間的轉(zhuǎn)換,這可以用于處理存儲(chǔ)在文件中或來自網(wǎng)絡(luò)連接以及其他源的二進(jìn)制數(shù)據(jù),下面介紹下Python使用struct庫的用法,感興趣的朋友一起看看吧
    2022-05-05
  • Python根據(jù)歐拉角求旋轉(zhuǎn)矩陣的實(shí)例

    Python根據(jù)歐拉角求旋轉(zhuǎn)矩陣的實(shí)例

    今天小編就為大家分享一篇Python根據(jù)歐拉角求旋轉(zhuǎn)矩陣的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Python中__slots__屬性介紹與基本使用方法

    Python中__slots__屬性介紹與基本使用方法

    在Python中,每個(gè)類都有實(shí)例屬性。默認(rèn)情況下Python用一個(gè)字典來保存一個(gè)對(duì)象的實(shí)例屬性。這非常有用,因?yàn)樗试S我們在運(yùn)行時(shí)去設(shè)置任意的新屬性。下面這篇文章主要給大家介紹了關(guān)于Python中__slots__屬性與基本使用方法的相關(guān)資料,需要的朋友可以參考下
    2018-09-09
  • 如何通過python的fabric包完成代碼上傳部署

    如何通過python的fabric包完成代碼上傳部署

    這篇文章主要介紹了如何通過python的fabric包完成代碼上傳部署,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Python queue模塊的用法

    Python queue模塊的用法

    本文主要介紹了Python queue模塊的用法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • 玩轉(zhuǎn)串口通信:利用pyserial庫,Python打開無限可能

    玩轉(zhuǎn)串口通信:利用pyserial庫,Python打開無限可能

    想要學(xué)習(xí)如何使用pyserial庫實(shí)現(xiàn)串口通信嗎?這篇指南將帶你一步步了解Python中的串口通信,無論是控制硬件設(shè)備還是與外部設(shè)備進(jìn)行數(shù)據(jù)交換,pyserial庫都能為你提供便捷的解決方案,快來跟著我們的指南,輕松掌握串口通信的技巧吧!
    2023-11-11
  • Python中的異常處理相關(guān)語句基礎(chǔ)學(xué)習(xí)筆記

    Python中的異常處理相關(guān)語句基礎(chǔ)學(xué)習(xí)筆記

    這里我們簡單整理一下Python中的異常處理相關(guān)語句基礎(chǔ)學(xué)習(xí)筆記,包括try...except與assert等基本語句的用法講解:
    2016-07-07

最新評(píng)論