python → matplotlib

文章介绍了如何在CSDN中使用Latex编写数学函数,并通过Python的matplotlib库进行图形化展示,展示了程序在数学学习中的应用,以及如何处理自变量范围和代码优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

函数曲线

 matpotlib+numpy

 matpotlib和numpy可以配合在一起使用。numpy主要是进行数学的计算,matplotlib主要是用于数学的绘图。

from matplotlib import pyplot as plt
import numpy as np
 
def deal(a,b):
    x1=list(np.arange(a,b,0.1))#此处可调整自变量取值范围,以便选择合适的观察尺度
    try:
        x1.remove(0)
    except:
        pass
    x1=list(map(float,x1))
    y=[]
    for i in range(len(x1)):
        y.append(((-3)**x1[i])/x1[i])
    plt.plot(x1,y,color='lightblue')
 
deal(-100,0)
deal(0,100)
plt.show()

生成图如下:

又如下代码所示:

from matplotlib import pyplot as plt
import numpy as np
 
x=np.linspace(-np.pi,np.pi,256,endpoint=True) 

y1=np.sin(x)
y2=np.cos(x)

plt.plot(x,y2)
plt.plot(x,y1)

plt.show()

可以生成如下图:

正弦函数和余弦函数。

(伊戈尔:《Python数据可视化编程实战》,颛清山译,北京:人民邮电出版社,2018年,第74页。)

可以调整该函数,代码如下:

from matplotlib import pyplot as plt
import numpy as np
 
x=np.linspace(-np.pi*10,np.pi*10,256,endpoint=True) 

y1=np.sin(x)
y2=np.cos(x)

#y3=x

plt.plot(x,y2,color="lightgreen")
plt.plot(x,y1,color="lightblue")
#plt.plot(x,y3)
plt.show()

生成图如下:

可以调整界面。

这样就可以调整大小宽窄高低。

如果想要x和y一致,还可以进行如下操作:

如下代码所示:

from matplotlib import pyplot as plt
import numpy as np
 
x=np.linspace(-np.pi*10,np.pi*10,256,endpoint=True) 

y1=np.sin(x)
y2=np.cos(x)

y3=x

plt.plot(x,y2,color="lightgreen")
plt.plot(x,y1,color="lightblue")
plt.plot(x,y3)
plt.show()

生成图如下:

如此,可以看到正弦函数和余弦函数的具体数值变化,即可完成。

matplotlib + Latex

CSDN中公式一栏,亦可以插入Latex函数。

以函数y=\frac{n}{n+30} 为例

也可以用Latex写如下代码:

\documentclass{article}
\usepackage{amsmath}
\begin{document}
\[
y=
\frac{n}{n+30}
\]
\end{document}

如下:

那么,该函数图像如何呢?于是在python上写如下代码:

from matplotlib import pyplot as plt
import numpy as np
import math
x=list(np.arange(-29,100,1))
y=[]

for i in range(len(x)):
    y.append(i/(i+30))
plt.plot(x,y,color='lightseagreen')
plt.show()

得到函数如如下所示:

这条曲线很像对数函数。

再回到最开始的函数。它似乎是通过函数的平移得到的。

不过,细细检查一些,这个代码写错了。错误的原因,是x列表中的数就是自变量,并不需要计算len(x),于是,更正代码如下:

from matplotlib import pyplot as plt
import numpy as np
import math
x=list(np.arange(10,100,1))
y=[]
 
for i in x:
    y.append(i/(i+30))
plt.plot(x,y,color='lightseagreen')
plt.show()

形成函数图如下:

可以在界面中,调整鼠标所在位置,知道具体的函数值。也可以通过左下角的按键,放大或者缩小显示图。总之很方便。在数学的学习中,程序是一个很好的工具。

以下面函数为例: a^{n}=\frac{(-1)^{n}} {n}

对于自变量的不同区域,可以写成函数形式,然后依次选择(-100,0)和(0,100)两个区间。如下代码所示:

from matplotlib import pyplot as plt
import numpy as np

def deal(a,b):
    x1=list(np.arange(a,b,1))#此处可调整自变量取值范围,以便选择合适的观察尺度
    try:
        x1.remove(0)
    except:
        pass
    x1=list(map(float,x1))
    y=[]
    for i in range(len(x1)):
        y.append(((-1)**x1[i])/x1[i])
    plt.plot(x1,y,color='lightseagreen')

deal(-100,0)
deal(0,100)
plt.show()

效果图如下所示:

程序代码和数学结合,威力无比。

数据可视化matplotlib

坐标点

数据可视化 matploactlib基本语法 确定纵坐标点 导入包

from matplotlib.pyplot import *
plot([1,2,3,2,3,2,2,1])#纵坐标的值。横坐标默认为纵坐标所在的序列。
show()

运行这段代码,执行效果如下:

即可完成。

横坐标为:1936,1937,1938,1939,单位为“年” 纵坐标:8431006,8626006,8994487,10040319,单位为“亩”。 请用python中的matplotlib,将其转化为图。

import matplotlib.pyplot as plt

# 横坐标数据
years = [1936, 1937, 1938, 1939]

# 纵坐标数据
acres = [8431006, 8626006, 8994487, 10040319]

# 创建图形和轴
fig, ax = plt.subplots()#fig不能缺少,不过名字可以是多样的,fi也可以。但是逗号前面不能没有。

# 绘制折线图
ax.plot(years, acres, marker='o', linestyle='-', color='b')

# 设置标题和标签
ax.set_title('Yearly Acreage')#需要用英文,如果用汉语则matplotlib中显示不出来。 Acreage种地面积
ax.set_xlabel('Year')
ax.set_ylabel('Acres')#Acres亩

# 设置x轴和y轴的刻度
ax.set_xticks(years)
ax.grid(True)

# 显示图形
plt.show()

运行这段代码将生成一个包含年份和亩数的折线图。以下是代码的主要步骤:

  1. 导入matplotlib.pyplot模块。
  2. 定义年份和亩数的数据。
  3. 创建一个图形和轴对象。
  4. 使用ax.plot方法绘制折线图,其中marker='o'表示在数据点上绘制圆圈,linestyle='-'表示使用实线连接数据点,color='b'表示使用蓝色。
  5. 设置图表的标题和轴标签。
  6. 设置x轴的刻度为给定的年份。
  7. 启用网格以便更好地查看数据。
  8. 使用plt.show()显示图形。

生成图如下:

这里的le7,指的是10的7次方。后面需要加上7个0,这是数学的表示。

即可完成。

统计图

数据可视化; 基础语法; matplotlib 数据; 案例来自书籍。

from matplotlib.pyplot import * 
# some simple data 
x = [1,2,3,4] 
y = [5,4,3,2] 
# create new figure
figure()


# divide subplots into 2 x 3 grid 
# and select #1 
subplot(231) 
plot(x, y)
# select #2 
subplot(232) 
bar(x, y) 
 # horizontal bar-charts 
subplot(233) 
barh(x, y)

# create stacked bar charts 
subplot(234) 
bar(x, y) 
# we need more data for stacked bar charts 
y1 = [7,8,5,3] 
bar(x, y1, bottom=y, color = 'r') 
# box plot 
subplot(235) 
boxplot(x) 
# scatter plot 
subplot(236) 
scatter(x,y)

show()

运行这段代码,在出现的Figure界面,选择界面下方的保存按钮,

生成统计图,代码执行的效果如下:

对这段代码进行重新调试。

from matplotlib.pyplot import * 

x = [0,1,2,3,4] # some simple data 
y = [6,5,4,3,2] 

figure()# create new figure

subplot(231) # divide subplots into 2 x 3 grid # and select #1  把显示界面进行分割。如3 x 3分割,然后选择第1个。
plot(x, y)
 
subplot(232) # select #2选择第二个区域。
bar(x, y)  # horizontal bar-charts ,纵向统计图。

subplot(233) # select #3选择第三个区域。
barh(x, y) #横向统计图

subplot(234) # create stacked bar charts 选择第四个模块。
bar(x, y) 
y1 = [3,7,8,5,3] # we need more data for stacked bar charts 。纵坐标统计图中,y1之上为需要填充颜色染色部分。
bar(x, y1, bottom=y, color = 'r') #在y的基础上,又加了y1 长度。注意,需要保持y和y1元素个数的一致。

subplot(235) # box plot 选择第5个区域
boxplot(x) #统计x所在的范围,方块图。

subplot(236) 
scatter(x,y)# scatter plot ,散点图。


show()

所得效果如下:

正弦函数

数据可视化;绘制正弦曲线; 用qt matplotlib包

要想生成正弦函数,有如下代码:

import matplotlib.pyplot as pyplot
import numpy as np

m=int(input("请输入想要在1到10的距离内用多少点来表示这幅正弦函数图:"))
x=np.linspace(-10,10,m)#横坐标x为1到10,m个横坐标点。
y=np.sin(x)
pyplot.plot(x,y,label=f"y=sin(x),x∈[-10,10],n={m})")
pyplot.legend()

pyplot.show()#展示这幅图。

生成图如下所示:

要想得到不同精度的图,可以进行如下设置:

import matplotlib.pyplot as pyplot
import numpy as np

for m in range(10,100,5):
    x=np.linspace(1,10,m)#横坐标x为1到10,m个横坐标点。
    y=np.sin(x)
    pyplot.plot(x,y,label=f"x=np.linspace(1,10,{m})")
    pyplot.legend()
    pyplot.show()

运行这段代码,可以依次得到不同的正弦函数图。原因在于有m个横坐标点。通过m坐标点数的变化,可以得到不同精度的图形。

图像调整

积累程序 ;数据可视化; matplotlib; 参数调整 ls lw color 等。

对于函数图像的颜色、宽度、形状等,都可以进行调整。

import matplotlib.pyplot as pyplot
import numpy as np


x=np.linspace(1,10,100)#横坐标x为1到10,m个横坐标点。
y=np.sin(x)
pyplot.plot(x,y,label=f"y=sin(x),x=∈(1,10),n=100",ls="-.",lw="0.5",color="r")
pyplot.legend()
pyplot.show()

生成图像如下所示:

ls ="- .",指的是线条的形式。举例如下:

'-',   '--',   '-.',   ':'

lw="0.5",指的是线条的宽度。

即可完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值