您的位置:

用Python绘制曲线

引言

随着数据可视化的需求不断增加,曲线绘制成为一种非常流行的可视化方式。 Python 作为一种功能强大的编程语言,具有丰富的绘图功能,可绘制包括动态曲线、数据曲线、科赫曲线、笛卡尔心形曲线等多种曲线类型。

使用Python绘制动态曲线

动态曲线可以非常生动地呈现数据的变化趋势,通过 pyecharts 包可以轻松完成。下面是 Pyecharts 实现动态曲线展示的例子。


import datetime
import random
from pyecharts import charts

# 实时获取温度数据
def get_temperature():
    temperature = random.randint(10, 20)
    timestamp = datetime.datetime.now()
    return [timestamp, temperature]

# 更新动态数据
def update_temperature():
    line_chart.add_xaxis([get_temperature()[0].strftime("%Y-%m-%d %H:%M:%S")])
    line_chart.add_yaxis("温度", [get_temperature()[1]])

line_chart = charts.Line()
line_chart.set_global_opts(title_opts=charts.TitleOpts(title="动态曲线图"))
line_chart.add_xaxis([])
line_chart.add_yaxis("温度", [])

line_chart.render_notebook()

for i in range(10):
    update_temperature()
    time.sleep(1)
    line_chart.render_notebook()

使用Python绘制数据曲线图

数据曲线是分析和展示数据变化趋势非常常用的方式,Python 中提供了丰富的数据处理和绘图工具包,例如 matplotlib、seaborn 等。下面是使用 matplotlib 绘制数据曲线的的例子。


import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)
y = np.sin(x)

fig = plt.figure()
plt.plot(x, y)
plt.title("数据曲线图")
plt.show()

使用递归法绘制科赫曲线

科赫曲线是一种非常经典的分形曲线,可以通过递归算法来实现。下面是 Python 中使用递归法绘制科赫曲线的代码,其中绘制函数 koch() 是使用递归算法实现的。


import turtle

def koch(tortoise, order, size):
    if order == 0:
        tortoise.forward(size)
    else:
        for angle in [60, -120, 60, 0]:
            koch(tortoise, order-1, size/3)
            tortoise.left(angle)

def main():
    tortoise = turtle.Turtle()
    window = turtle.Screen()
    tortoise.penup()
    tortoise.goto(-200,100)
    tortoise.pendown()
    for i in range(3):
        koch(tortoise, 3, 300)
        tortoise.right(120)

main()

使用递归法绘制科赫曲线 Python

科赫曲线的计算也可以通过递归算法来实现,下面是 Python 中使用递归法绘制科赫曲线的代码,其中绘制函数 koch_curve() 是使用递归算法实现的。


from turtle import *

def koch_curve(turtle, iterations, length, shortening_factor, angle):
    if iterations == 0:
        turtle.forward(length)
    else:
        iterations -= 1
        length *= shortening_factor
        koch_curve(turtle, iterations, length, shortening_factor, angle)
        turtle.left(angle)
        koch_curve(turtle, iterations, length, shortening_factor, angle)
        turtle.right(angle * 2)
        koch_curve(turtle, iterations, length, shortening_factor, angle)
        turtle.left(angle)
        koch_curve(turtle, iterations, length, shortening_factor, angle)

t = Pen()
t.speed(0)

t.penup()
t.goto(-200, 100)
t.pendown()

iterations = 3
length = 300
shortening_factor = 1/3
angle = 60

koch_curve(t, iterations, length, shortening_factor, angle)

exitonclick()

使用Python处理CSV文件绘制曲线

使用 Python 处理 CSV 文件非常方便,通过 pandas 库的 read_csv() 方法可将 CSV 文件读取为 DataFrame, 然后可以使用 matplotlib 绘制出曲线图。下面是 Python 中使用CSV文件数据绘制曲线的例子。


import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv("data.csv")

plt.plot(df["x"], df["y"])
plt.title("CSV文件绘制曲线")
plt.show()

使用Python绘制函数曲线

Python 中通过使用 sympy 库可以快速的绘出函数的曲线图,其中符号计算带来的优势在于可对函数求导或者积分,并进行简化。下面是 Python 中使用 sympy 绘制函数曲线的例子。


import sympy as sym
from sympy.plotting import plot

x = sym.Symbol("x")
y = sym.sin(x)

plot(y, (x, -5, 5))

使用Python绘制loss曲线

loss 曲线常用于机器学习训练过程可视化,通过 Python 中的 matplotlib 绘制可以快速的进行实现。下面是 Python 中使用 matplotlib 绘制 loss 曲线的例子。


import matplotlib.pyplot as plt

epoch = range(100)
train_loss = [0.9**i + i**0.5 for i in epoch]

plt.plot(epoch, train_loss)
plt.title("Loss曲线")
plt.show()

使用Python绘制概率密度曲线

概率密度曲线对于了解数据分布情况非常有帮助,通过 Python 中的 scipy 包可以快速的对数据进行分析并且绘制出概率密度曲线。下面是 Python 中使用 scipy 绘制概率密度曲线的例子。


import numpy as np
from scipy.stats import norm
import matplotlib.pyplot as plt

x = np.linspace(-10, 10, 100)
plt.plot(x, norm.pdf(x, loc=0, scale=1))
plt.title("概率密度曲线")
plt.show()

使用Python绘制笛卡尔心形曲线

笛卡尔心形曲线是一种经典的二维曲线,它的数学表达式为 (x^2+y^2-1)^3 - x^2y^3 = 0。Python 中多种绘图库都可以完成对笛卡尔心形曲线的绘制。下面是 Python 中使用 matplotlib 绘制笛卡尔心形曲线的例子。


import matplotlib.pyplot as plt
import numpy as np

t = np.linspace(0, 2*np.pi, 1000)
x = np.sin(t)*(np.cos(t)**3)
y = np.cos(t)*(np.sin(t)**3)

plt.plot(x, y)
plt.title("笛卡尔心形曲线")
plt.show()

使用Python绘制螺旋曲线

螺旋曲线是一种非常有趣的曲线类型,Python 中使用 turtle 库可以快捷的完成对螺旋曲线的绘制。下面是 Python 中使用 turtle 绘制螺旋曲线的例子。


import turtle

def spiral(n):
    for i in range(n):
        turtle.forward(i * 10)
        turtle.right(144)

turtle.speed(0)
turtle.pensize(2)
turtle.pencolor("red")
spiral(25)
turtle.done()