函数曲线
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函数。
以函数 为例
也可以用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()
形成函数图如下:
可以在界面中,调整鼠标所在位置,知道具体的函数值。也可以通过左下角的按键,放大或者缩小显示图。总之很方便。在数学的学习中,程序是一个很好的工具。
以下面函数为例:
对于自变量的不同区域,可以写成函数形式,然后依次选择(-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()
运行这段代码将生成一个包含年份和亩数的折线图。以下是代码的主要步骤:
- 导入
matplotlib.pyplot
模块。 - 定义年份和亩数的数据。
- 创建一个图形和轴对象。
- 使用
ax.plot
方法绘制折线图,其中marker='o'
表示在数据点上绘制圆圈,linestyle='-'
表示使用实线连接数据点,color='b'
表示使用蓝色。 - 设置图表的标题和轴标签。
- 设置x轴的刻度为给定的年份。
- 启用网格以便更好地查看数据。
- 使用
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",指的是线条的宽度。
即可完成。