python中matplotlib学习

matplotlib入门学习

一.折线图

import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [1, 4, 9,16, 25]
plt.plot(x,y)
plt.show()

在这里插入图片描述
设置样式(添加标题,添加x,y的名称)
linewidth属性设置线条宽度
在这里插入图片描述

二.绘制一元二次方程图片

plt.savefig()来保存格式
在这里插入图片描述

import matplotlib.pyplot as plt
x = range(-100, 100)
y = [i**2 for i in x]
plt.plot(x,y)
plt.savefig('result')
plt.show()

在这里插入图片描述

三.正弦函数

3.1利用linespace创建等差数列

在这里插入图片描述

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 100)
sin_y = np.sin(x)
plt.plot(x,sin_y)
plt.show()

在这里插入图片描述

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 100)
sin_y = np.sin(x)
cos_y = np.cos(x)
plt.plot(x,sin_y)
plt.plot(x,cos_y)
plt.show()

在这里插入图片描述

3.2使用plt.subplot( , , )进行分区

3.3使用plt.xlim()改横坐标

3.4使用plt.ylim()改横坐标

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 100)
plt.subplot(2, 2, 1)
plt.xlim(-5, 20)
plt.ylim(-2, 2)
plt.plot(x, np.sin(x))
plt.subplot(2, 2, 3)
plt.plot(x, np.cos(x))
plt.show()

在这里插入图片描述

四.散点图用scatter()

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 100)
plt.scatter(x, np.sin(x))
或者用plt.plot(x, np.sin(x)'o')
plt.show()

在这里插入图片描述
从上面的示例可以看到,使用plot绘制和使用scatter绘制出来的图形是没有区别的,但是使用plot绘制图形的速度由于scatter,所以如果画一堆点,而且点的形式没有差别,那么我们使用plot,如果点的形式有差别(指点的大小和颜色不同)则必须使用scatter
rand()指的是0-1之间的任意数,若想扩大可用*410222某个值

import matplotlib.pyplot as plt
import numpy as np
np.random.seed(0)
x = np.random.rand(100)
y = np.random.rand(100)
size = np.arange(1000)|1000代表的是种类
size_1=np.random.choice(size,100,replace=False)不可重复
color = np.random.rand(100)
plt.scatter(x, y, s=size_1, c=color, alpha=0.7)s代表的是点的大小,c代表的是点的颜色,alpha代表的是点的透明度
plt.show()
print(size_1)

在这里插入图片描述
在这里插入图片描述

五.柱状图

5.1标记类型和线性必须放在颜色后面

5.2 barh表示水平方向的柱状图

5.3 bar表示竖直方向的柱状图

![在这里插入图片描述](https://img-blog.csdnimg.cn/36f71f4254524110aed28c106e50f14c.png

import matplotlib.pyplot as plt
x = [1980, 1985, 1990, 1995]
x_label = ['1980年', '1985年', '1990年', '1980年']
y = [1000, 2000, 3000, 4000]
width定宽度
plt.bar(x, y, width=3)
修改中文乱码:
plt.rcParams['font.sans-serif']=['SimHei']
修改横坐标
plt.xticks(x, x_label)
plt.xlabel('年份')
plt.ylabel('销量')
plt.title('根据年份')
plt.show()

5.4 axvline()是垂直方向的线

5.5 axhline()是水平方向的

import matplotlib.pyplot as plt
import numpy as np
plt.subplot(1, 2, 1)
np.random.seed(0)
x = np.arange(5)
y = np.random.randint(-5, 5, 5)
plt.bar(x, y, color='b')
v_bar = plt.bar(x, y, color='b')
*这里是给每条柱变颜色的*
for bar, height in zip(v_bar, y):
    if height > 0:
        bar.set(color='r')
plt.axhline(0, color='b', linewidth=2)
plt.subplot(1, 2, 2)
plt.barh(x, y, color='r')
plt.axvline(0, color='r', linewidth=2)
plt.show()

在这里插入图片描述

六.柱状图的使用实例:

6.1format函数的语法及用法:可以接受无限个参数,可以指定顺序,返回结果为字符串

import matplotlib.pyplot as plt
import numpy as np
real_names = ['千与千寻', '玩具总动员', '黑衣人:全球追击']
real_num1 = [7548, 4013, 1673]
real_num2 = [5453, 1840, 1080]
real_num3 = [4348, 2345, 1980]
x = np.arange(len(real_names))
默认宽度为1,用0.3的话1-3*0.3=0.1,使中间有空格
width = 0.3
label是添加图例的一部分
plt.bar(x, real_num1, alpha=0.5,width=width, label=real_names[0])
plt.bar([i+width for i in x], real_num2, alpha=0.5, width=width, label=real_names[1])
plt.bar([i+width*2 for i in x], real_num3, alpha=0.5, width=width, label=real_names[2])
plt.rcParams['font.sans-serif']=['SimHei']
x_label=['第{}天'.format(i+1)for i in x]
plt.xticks([i+width for i in x], x_label)
plt.ylabel('票房数')
设置图例的:
plt.legend()
plt.title('三天三部电影的票房数')
plt.show()

在这里插入图片描述

七.绘制饼状图

7.1用pie函数

import matplotlib.pyplot as plt
import numpy as np
man = 71351
women = 68187
man_perc = man/(women+man)
women_perc =women/(women+man)
plt.rcParams['font.sans-serif']=['SimHei']
labels = ['男', '女']
colors = ['blue', 'red']
#labels表示名称 coloes:颜色 explode=分裂 autopct 显示百分比
paches, tests, autotexts = plt.pie([man_perc, women_perc], labels=labels, colors=colors, explode=(0, 0.05), autopct='%0.1f%%')
#设置饼状图中的字体颜色
for text in autotexts:
    text.set_color('white')
#设置字体大小
for text in tests+autotexts:
    text.set_fontsize(20)
plt.show()

在这里插入图片描述

八.绘制直方图:

8.1使用hist函数

import matplotlib.pyplot as plt
import numpy as np
#生成1000个标准的正太分布随机数
x = np.random.randn(1000)
#修改柱的宽度 使用bins
plt.hist(x, bins=100)
plt.show()

在这里插入图片描述

8.2 使用np.random.normal(loc,scale,size)

loc 此概率分布的均值
scale 对应分布的跨百度,scale越大越矮胖,越小越瘦高
size 输出的shape,默认为None,只输出一个值

import matplotlib.pyplot as plt
import numpy as np
#使用np.random.normal()指定期望和均值的正太分布
x = np.random.normal(0, 0.8, 1000)
y = np.random.normal(-2, 1, 1000)
z = np.random.normal(3, 2, 1000)
kwargs = dict(bins = 100,alpha=0.5)#alpha是透明度,范围在0-1
plt.hist(x, **kwargs)
plt.hist(y, **kwargs)
plt.hist(z, **kwargs)
plt.show()

在这里插入图片描述

九.等高线图

9.1计算x和y相交的点用meshgrid

9.2 plt.contour()用法参照图一

9.3 plt.contourf()用法参照图二

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-10, 10, 100)
y = np.linspace(-10, 10, 100)
#计算x和y相交的点
X, Y = np.meshgrid(x, y)
#计算z的坐标
Z = np.sqrt(X**2+Y**2)
#绘制等高线图
plt.contour(X, Y, Z)(图一)
plt.contourf(X, Y, Z)(图二)
plt.show()

图一
在这里插入图片描述

十.绘制三维图

先导入3d包

10.1 想要通过输入坐标点来绘制3D平面图,用plot_trisurf

import matplotlib.pyplot as plt
#导入3D包
from mpl_toolkits.mplot3d import Axes3D
#创建x,y,z
X = [1, 1, 2, 2]
Y = [3, 4, 4, 3]
Z = [1, 100, 1, 1]
#定义图像
figure = plt.figure()
#创建Axes3D对象
ax = Axes3D(figure)
ax.plot_trisurf(X, Y, Z)
plt.show()

在这里插入图片描述

十一.热力图的绘制

imshow表示显示图像
array其中只支持一维数组
在这里插入图片描述

  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值