python绘图

   

目录

   

 常用的 pyplot 函数:

一、案例1

 二、案例2

三、案例3

四、案例4

五、案例5

六、案例6

七、案例7

 八、案例8(线性回归)


 常用的 pyplot 函数:

  • plot():用于绘制线图和散点图
  • scatter():用于绘制散点图
  • bar():用于绘制垂直条形图和水平条形图
  • hist():用于绘制直方图
  • pie():用于绘制饼图
  • imshow():用于绘制图像
  • subplots():用于创建子

一、案例1

import matplotlib.pyplot as plt #给 matplotlib.pyplot起别名plt
import numpy as np              #给numpy起别名np
x=np.linspace(-5,5,500)
y=np.tan(x)                     #tan(x)是库函数,必须加np
plt.plot(x,y,color="red",linewidth=3,marker="^",markersize=5)#plot函数设置图片的属性
plt.show()

运行结果

 相关函数:

     plot() 用于画图它可以绘制点和线,语法格式如下:

# 画单条线
plot([x], y, [fmt], *, data=None, **kwargs)
# 画多条线
plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs)

参数说明:

  • x, y:点或线的节点,x 为 x 轴数据,y 为 y 轴数据,数据可以列表或数组。
  • fmt:可选,定义基本格式(如颜色、标记和线条样式)。
  • **kwargs:可选,用在二维平面图上,设置指定属性,如标签,线的宽度等。

>>> plot(x, y)        # 创建 y 中数据与 x 中对应值的二维线图,使用默认样式
>>> plot(x, y, 'bo')  # 创建 y 中数据与 x 中对应值的二维线图,使用蓝色实心圈绘制
>>> plot(y)           # x 的值为 0..N-1
>>> plot(y, 'r+')     # 使用红色 + 号

颜色字符:'b' 蓝色,'m' 洋红色,'g' 绿色,'y' 黄色,'r' 红色,'k' 黑色,'w' 白色,'c' 青绿色,'#008000' RGB 颜色符串。多条曲线不指定颜色时,会自动选择不同颜色。

线型参数:'‐' 实线,'‐‐' 破折线,'‐.' 点划线,':' 虚线。

标记字符:'.' 点标记,',' 像素标记(极小点),'o' 实心圈标记,'v' 倒三角标记,'^' 上三角标记,'>' 右三角标记,'<' 左三角标记...等等。

如果我们要绘制坐标 (1, 3) 到 (8, 10) 的线,我们就需要传递两个数组 [1, 8] 和 [3, 10] 给 plot 函数:

数说明:plot相关函Matplotlib Pyplot | 菜鸟教程 (runoob.com) 

 二、案例2

import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-10,10,100)
y=np.cos(x)*np.tan(x)*x**2
# 通过rc参数修改字体为黑体,就可以显示中文
plt.rcParams['font.sans-serif'] = ['SimHei']
# 通过rc参数修改字符显示,就可以正常显示负号
plt.rcParams['axes.unicode_minus'] = False

plt.figure()  #第一个函数图像
plt.plot(x,y)
plt.xlim(xmin=-50)
plt.ylim(ymax=50)
plt.xlabel("横坐标")#给横坐标添加标签
plt.ylabel("纵坐标")#给纵坐标添加标签
plt.xticks()
plt.yticks(ticks=[-50,-40,-30,-20,-10,0],labels=['a','b','c','d','e','f'])

plt.figure()    #第二个函数图像
plt.plot(x,y)
plt.xlim((-2,4))
plt.ylim(ymin=-0.5,ymax=2)
plt.xlabel("横坐标")
plt.ylabel("纵坐标")
plt.show()

添加中文标签不显示的情况下,输入:

# 通过rc参数修改字体为黑体,就可以显示中文
plt.rcParams['font.sans-serif'] = ['SimHei']
# 通过rc参数修改字符显示,就可以正常显示负号
plt.rcParams['axes.unicode_minus'] = False

运行结果

三、案例3

import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-10,10,100)
y=np.cos(x)*np.tan(x)*x**2
# 通过rc参数修改字体为黑体,就可以显示中文
plt.rcParams['font.sans-serif'] = ['SimHei']
# 通过rc参数修改字符显示,就可以正常显示负号
plt.rcParams['axes.unicode_minus'] = False

plt.figure()
plt.plot(x,y)
plt.text(x=-2.5,y=10,s="sinx",size=50,color="red")#添加文本
plt.show()

运行结果

相关函数 :

1、plt.text()作用:画图时给图中的点 加标签

plt.text(x, y, s, fontsize, verticalalignment,horizontalalignment,rotation , kwargs)

其中
(1)x,y:标签添加的位置,注释文本内容所在位置的横/纵坐标,默认是根据坐标轴的数据来度量的,是绝对值,也就是说图中点所在位置的对应的值,特别的,如果你要变换坐标系的话,要用到transform=ax.transAxes参数。
(2)s:标签的符号,字符串格式,比如你想加个“我爱python”,更多的是你标注跟数据有关的主体。
(3)fontsize:加标签字体大小,取整数。
(4)verticalalignment:垂直对齐方式 ,可选 ‘center’ ,‘top’ , ‘bottom’,‘baseline’ 等
(5)horizontalalignment:水平对齐方式 ,可以填 ‘center’ , ‘right’ ,‘left’ 等
(6)rotation:标签的旋转角度,以逆时针计算,取整
(7)family :设置字体
(8)style: 设置字体的风格
(9)weight:设置字体的粗细
(10) bbox:给字体添加框, 如 bbox=dict(facecolor=‘red’, alpha=0.5) 等。
(11)string:注释文本内容
(12)color:注释文本内容的字体颜色

2、 np.linspace

通过定义均匀间隔创建数值序列。其实,需要指定间隔起始点、终止端,以及指定分隔值总数(包括起始点和终止点);最终函数返回间隔类均匀分布的数值序列。请看示例:

np.linspace(start = 0, stop = 100, num = 5) #x轴起点是0,终点是100,间隔是5

 理解如下:

四、案例4

import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-10,10,100)
y=np.cos(x)*np.tan(x)*x**2

n=100
x1=np.random.rand(n)
y1=np.random.rand(n)
plt.scatter(x1,y1,s=100,c='r',marker='^',alpha=1)

x2=np.random.rand(n)
y2=np.random.rand(n)
plt.scatter(x2,y2,s=100,c='y',marker='D',alpha=1)
plt.show()

运行结果:

 相关函数:

1、scatter() 方法语法格式如下:Matplotlib 散点图 | 菜鸟教程 (runoob.com)

matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, *, edgecolors=None, plotnonfinite=False, data=None, **kwargs)

参数说明:

x,y:长度相同的数组,也就是我们即将绘制散点图的数据点,输入数据。

s:点的大小,默认 20,也可以是个数组,数组每个参数为对应点的大小。

c:点的颜色,默认蓝色 'b',也可以是个 RGB 或 RGBA 二维行数组。

marker:点的样式,默认小圆圈 'o'。

cmap:Colormap,默认 None,标量或者是一个 colormap 的名字,只有 c 是一个浮点数数组的时才使用。如果没有申明就是 image.cmap。

norm:Normalize,默认 None,数据亮度在 0-1 之间,只有 c 是一个浮点数的数组的时才使用。

vmin,vmax::亮度设置,在 norm 参数存在时会忽略。

alpha::透明度设置,0-1 之间,默认 None,即不透明。

linewidths::标记点的长度。

edgecolors::颜色或颜色序列,默认为 'face',可选值有 'face', 'none', None。

plotnonfinite::布尔值,设置是否使用非限定的 c ( inf, -inf 或 nan) 绘制点。

**kwargs::其他参数。

五、案例5

import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-10,10,100)
y=np.cos(x)

x0=np.arange(12)
h1=np.random.uniform(1.0,5.0,12)
plt.bar(x0,h1,width=1,bottom=1.5,color='yellow',edgecolor='red')

h2=np.random.uniform(-5.0,-1,12)
plt.bar(x0,h2,width=1,bottom=-1.5,color='red',edgecolor='yellow')
plt.show()

运行结果:

相关函数:

1、 np.range()

函数语法

range(start, stop[, step])

参数说明:

  • start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
  • stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
  • step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)

2、 plt.bar()

bar()的基础参数如下:

  • x:柱子在x轴上的坐标。浮点数或类数组结构。注意x可以为字符串数组!
  • height:柱子的高度,即y轴上的坐标。浮点数或类数组结构。
  • width:柱子的宽度。浮点数或类数组结构。默认值为0.8
  • bottom:柱子的基准高度。浮点数或类数组结构。默认值为0
  • align:柱子在x轴上的对齐方式。字符串,取值范围为{'center', 'edge'},默认为'center'
    • 'center'x位于柱子的中心位置。
    • 'edge'x位于柱子的左侧。如果想让x位于柱子右侧,需要同时设置负width 以及align='edge'

 参考链接:Matplotlib Pyplot | 菜鸟教程 (runoob.com)

六、案例6

import matplotlib.pyplot as plt
import numpy as np
plt.figure()
data=np.array([[124,1,32],[150,222,100],[55,255,180]])#RGB颜色
plt.imshow(data)
plt.show()

运行结果

七、案例7

import matplotlib.pyplot as plt
import numpy as np

x=np.linspace(-3,3,50)
y1=np.sin(x)
y2=np.tanh(x)
y3=2*x+2
y4=x**2
plt.figure("tutu",(15,14),300)

plt.rcParams.update({'font.size': 8})#修改全局字体大小

plt.subplot(2,3,4)#纵的分成2份,横的分成3份,第4个图像
plt.plot(x,y3)

plt.subplot(2,3,5)
plt.plot(x,y4)
#
plt.subplot(2,1,1)
plt.plot(x,y2)
#
plt.subplot(2,3,6)
plt.plot(x,y1)
plt.savefig(r"C:\Users\15535\Desktop\12.jpg")

plt.show()

运行结果

 八、案例8(线性回归)

import matplotlib.pyplot as plt
import numpy as np
# 通过rc参数修改字体为黑体,就可以显示中文
plt.rcParams['font.sans-serif'] = ['SimHei']
# 通过rc参数修改字符显示,就可以正常显示负号
plt.rcParams.update({'font.size': 15})#修改全局字体大小
plt.rcParams['axes.unicode_minus'] = False
from sklearn import datasets,linear_model
from sklearn.model_selection import train_test_split
##第一步 下载数据
datas,targets=datasets.make_regression(100,n_features=1,
                                       n_targets=1,
                                       noise=15,
                                       random_state=0)
print(len(datas))
#第二步 切割数据集
train_data,test_data,train_level,test_label=train_test_split(datas,targets,test_size=0.3,train_size=0.7)
print(len(train_data))
print(len(train_level))
print(len(test_data))
print(len(test_label))

#第三步 特征工程---(标准化,二值化,正则化)
#第四步 模型选择(自己定义一个模型)
model=linear_model.LinearRegression()
#第五步 训练
model.fit(train_data,train_level)
#设置一个点进行线性拟合
_x=np.array([-2.5,2.5])
_y=model.coef_ * _x+model.intercept_
print(_x)
print(_y)
plt.scatter(train_data,train_level)
plt.plot(_x,_y,linewidth=2,color='red')
plt.title("线性回归")
plt.show()

运行结果

  • 19
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值