1. 程式人生 > >用Python畫出平滑的曲線(插值法)

用Python畫出平滑的曲線(插值法)

實現所需的庫

numpy、scipy、matplotlib

實現所需的方法

插值

  • nearest:最鄰近插值法
  • zero:階梯插值
  • slinear:線性插值
  • quadratic、cubic:2、3階B樣條曲線插值

擬合和插值的區別

簡單來說,插值就是根據原有資料進行填充,最後生成的曲線一定過原有點。

擬合是通過原有資料,調整曲線係數,使得曲線與已知點集的差別(最小二乘)最小,最後生成的曲線不一定經過原有點。

程式碼實現

# -*- coding: utf-8 -*-

# 呼叫模組
# 呼叫陣列模組
import numpy as np
# 實現插值的模組
from scipy import interpolate # 畫圖的模組 import matplotlib.pyplot as plt # 生成隨機數的模組 import random # random.randint(0, 10) 生成0-10範圍內的一個整型數 # y是一個數組裡面有10個隨機數,表示y軸的值 y = np.array([random.randint(0, 10) for _ in range(10)]) # x是一個數組,表示x軸的值 x = np.array([num for num in range(10)]) # 插值法之後的x軸值,表示從0到9間距為0.5的18個數 xnew = np.arange(0
, 9, 0.5) """ kind方法: nearest、zero、slinear、quadratic、cubic 實現函式func """ func = interpolate.interp1d(x, y, kind='cubic') # 利用xnew和func函式生成ynew,xnew的數量等於ynew數量 ynew = func(xnew) # 畫圖部分 # 原圖 plt.plot(x, y, 'ro-') # 擬合之後的平滑曲線圖 plt.plot(xnew, ynew) plt.show()

注意事項

  • x, y為原來的資料(少量)
  • xnew為一個數組,條件:xxnew
    • 如:x的最小值為-2.931,最大值為10.312;則xnew的左邊界要小於-2.931,右邊界要大於10.312。當然也最好注意一下間距,最好小於x中的精度
  • func為函式,裡面的引數x、y、kind,x,y就是原資料的x,y,kind為需要指定的方法
  • ynew需要通過xnew陣列和func函式來生成
  • 理論上xnew陣列內的值越多,生成的曲線越平滑

參考部落格

相關推薦

Python平滑曲線

實現所需的庫 numpy、scipy、matplotlib 實現所需的方法 插值 nearest:最鄰近插值法 zero:階梯插值 slinear:線性插值 quadratic、cubic:2、3階B樣條曲線插值 擬合和插值的區別 簡

## Python等高線,並且設定xy軸刻度標籤

import matplotlib.pyplot as plt import numpy as np fig = plt.figure(figsize=(9, 6)) # 定義等高線高度函式 def f(x, y): return (pow(x,3)+pow(y,3)-15*x-20*

Matplotlib學習---matplotlib直方圖/密度圖histogram, density plot

hist true ble 次數 出現的次數 ron 我們 9.1 獲取 直方圖用於展示數據的分布情況,x軸是一個連續變量,y軸是該變量的頻次。 下面利用Nathan Yau所著的《鮮活的數據:數據可視化指南》一書中的數據,學習畫圖。 數據地址:http://dat

Python寫網絡爬蟲高清版PDF

頁面 逆向 網上 編程語言 線程 ajax 是什麽 保護 term 用Python寫網絡爬蟲(高清版)PDF百度網盤鏈接:https://pan.baidu.com/s/1kdRFAEuze-A9ToWVXHoCXw 提取碼:8ib1 復制這段內容後打開百度網盤手機App,

java符號拼的圖案類似佛祖保佑

因有特殊轉義符號,所以看著排列不整齊,從專案中輸出就會好的: 佛祖保佑圖案: System.out.println("\n\n\n"); System.out.println(" _ooOoo_ "); System.out.pri

Python進行體育競技分析預測球隊成績

今天我們用python進行體育競技分析,預測球隊成績 一.體育競技分析的IPO模式: 輸入I(input):兩個球員的能力值,模擬比賽的次數(其中,運動員的能力值,可以通過發球方贏得本回合的概率來表示,             一個能力值為0.

Python實現拉格朗日

erp 拉格朗日 input 估計 while 關系 NPU init for 已知sinx的一組x,y對應關系,用拉格朗日插值法估計sin(0.3367)的值. x x0.32 0.34 0.36 y 0.314567 0.333487 0.352274

使用Matlab進行影象的讀寫、顯示和縮放最近臨和雙線性內

上次我們開始進行數字影象處理這門課程的實驗,直到現在才抽空出來寫寫文章,記錄一下知識點。介紹一下,使用Matlab對數字影象的簡單處理。 1、 讀取與顯示輸入影象: %輸入影象和顯示影象 funct

Android屬性動畫 TimeInterpolator

OK,繼續學習屬性動畫,本篇文章是屬性動畫系列的第三篇文章了,今天來學習一下屬性動畫中的TimeInterpolator,如果你對屬性動畫還不太熟悉,可以點選下面的連結學習一下前兩篇文章的知識: 1.介紹 先說說Interpolator,在And

canvas進階——如何平滑曲線?

背景概要 相信大家平時在學習canvas 或 專案開發中使用canvas的時候應該都遇到過這樣的需求:實現一個可以書寫的畫板小工具。 嗯,相信這對canvas使用較熟的童鞋來說僅僅只是幾十行程式碼就可以搞掂的事情,以下demo就是一個再也簡單不過的例子了: <!DOCTYPE html> &

PythonROC曲線 matplotlib 顏色、標記、線條引數控制

在分類模型中,ROC曲線和AUC值經常作為衡量一個模型擬合程度的指標。最近在建模過程中需要作出模型的ROC曲線,參考了sklearn官網的教程和部落格。現在將自己的學習過程總結如下,希望對初次接觸的同學有所幫助。PS:網上的例子實在是晦澀難懂,在折騰了一下午之後

初中代數結合python正方形

在螢幕上列印類似下面的圖形: 常規畫正方形的演算法:   這幾乎是初學所有計算機語言時都會遇到的問題。演算法都大致類似,就是找出列印規律然後用計算機語句表達出來。最常規的演算法是:輸入數字n就列印n行,首行和尾行列印n個*號,其它行中列印收尾*號,其他位置列印空格。實現如下: s=int(in

沒有基礎小編帶你,python機器貓有程式碼

小編帶你玩python 沒有基礎小編帶你,用python畫機器貓。只需要python3和小編的程式碼即可。python3小編送,程式碼文章有,現在就差個你了。 執行不了的找小編,小編包教會你。 重要的事情說三遍: python3小編送,程式碼文章有。 python3小編送,程式碼文章有。 python

使用Unity一條平滑曲線貝塞爾曲線並使小球沿曲線運動

這裡直接講解在U3D中的實現方式 直接拿三階貝塞爾曲線為例,首先觀察下圖: 從圖中可以看出,只有四個點是保持不變的,分別是P0,P1,P2,P3,這四個點兩兩相連得到三個線段 (1)在上四點構成的三個線段中,p0-p1上有到一個點,p1

Java2D樹的結構是不是感覺標題很熟悉

前言 感覺標題很熟悉的就對了,因為其實這是我碰到了一個作業要畫出樹,然後就百度了一下,參考了另一位學者kakashi8841(姑且就這麼叫吧)的文章和程式碼,才做完了作業。下面是連結: 本文的內容就是改進了原文的Bug,所以說大部分和原文很像。

python個五星紅旗

eth for forward margin mar turtle got idt 根據 根據下圖發現,主星和2、3副星從右畫就好,而1、4副星從左開始畫會比較好找坐標。 import turtle turtle.bgcolor("red") turtle.fil

python一朵玫瑰花

jpg port es2017 time logs 代碼 from mage light 廢話不多說,直接上代碼 from turtle import * import time setup(600,800,0,0) speed(0) penup() seth(90)

python心形圖

package div origin enc strip 心形 gin 畫出 gif 程序員表達愛的方式真是多種多樣。比如,用python來畫一個心型,獻給夢中的情人,代碼如下: from turtle import * pensize(1) pencolor(‘red

div 三角形

gpo 元素 如果 圖片 代碼 solid pos adding pad 畫三角形的代碼: border-top: 10px solid rgba(0,0,0,0); border-bottom: 10px solid rgba(0,0,0,0); bor

就算會python顆心,可你依然還是只單身狗

SQ per 答案 bin ive matplot 題意 就是 size :) 標題是開玩笑的,千萬別認真。 隨著AI的飛速發展,有誌於此行的碼農也是急劇的增加,帶來的就是大家對算法、數學的興趣也格外升高。 本文的來歷是這樣,今天某老同事在朋友圈發了一張屏拍,求公式。