Matplolib常用用法

画出网格:plt.grid()

保存图片:plt.savefig(文件名)

画出胸型线:

x = np.arange(1, 0, -0.001)
y = (-3 * x * np.log(x) + np.exp(-(40 * (x - 1 / np.e)) ** 4) / 25) / 2
plt.figure(figsize=(5,7))
plt.plot(y, x, 'r-', linewidth=2)
plt.grid(True)
plt.show()

设置中文字体:matplotlib.rcParams['font.sans-serif'] = ['SimHei']

不隐藏负号:matplotlib.rcParams['axes.unicode_minus'] = False

设置窗口大小和背景颜色:plt.figure(figsize=(12, 8), facecolor='w')

画出均匀分布直方图:

x = np.random.rand(10000)

plt.hist(x, 30, color='m', alpha=0.5)#30个

 

numpy.random.uniform(low,high,size)
功能:从一个均匀分布[low,high)中随机采样,注意定义域是左闭右开,即包含low,不包含high.

 绘制三维图像

x, y = np.ogrid[-3:3:100j, -3:3:100j]

z = x*y*np.exp(-(x**2 + y**2)/2) / math.sqrt(2*math.pi)

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

ax.plot_surface(x, y, z, rstride=5, cstride=5, cmap=cm.Accent, linewidth=0.5)
plt.show()

设置会图框的大小为9*12:plt.figure(figsize=(9,12))

将绘图框分割为3行一列取第一个子图:plt.subplot(311)

 

显示标题:

Plt.title(‘题目‘)

Plt.xlables()

Plt.ylables()

#如果您想要更改特定线条的宽度或颜色,或者如果您想要有一些网格线,
# 那么您需要造型呢?那么,让我向您展示如何使用python matplotlib为图形添加样式。
# 首先,您需要从python matplotlib库导入样式包,然后使用样式函数,如下面的代码所示:

from matplotlib import style
style.use('ggplot')#样式为背景灰色

显示图例:

Plt.legend()

plt.grid(False,color='k')#是否要网格以及网格的颜色

画条形图:

Plt.bar(x,y,,label="BMW", color='b', width=.5)

# 直方图回目录条形图和直方图之间的区别:直方图用于显示分布,而条形图用于比较不同的实体。
# 当您有阵列或很长的列表时,直方图很有用。让我们考虑一个例子,
# 我需要使用箱子绘制不同年龄阶段的人口数。现在,箱子指的是被分成一系列间隔的值范围。
# 箱子通常是相同尺寸的。在下面的代码中,我创建了间隔为10的箱子,
# 这意味着第一个箱子包含从0到9,然后是10到19,依此类推。
population_age = [22,55,62,45,21,22,34,42,42,4,2,102,95,85,55,110,120,70,65,55,111,115,80,75,65,54,44,43,42,48]
bins = [0,10,20,30,40,50,60,70,80,90,100,110,120]
plt.hist(population_age, bins, histtype='bar', color='b', rwidth=0.8)#对population_age中出现的数字范围做一个统计,统计每一段

#正如您在上面的图中所看到的,我们得到了关于箱子的年龄组。我们人数最多的年龄组是40到50岁年龄段。

#散点图通常我们需要散点图来比较变量,
# 例如,一个变量受另一个变量的影响,以构建一个关系。
# 数据显示为点的集合,每个点具有一个变量的值,
# 该变量确定水平轴上的位置,而另一个变量的值确定垂直轴上的位置。考虑以下示例:

plt.scatter(x,y, label='high income low saving',color='r')

#面积图与线图非常相似。它们也被称为堆栈图。
# 这些图可用于跟踪构成一个整体类别的两个或多个相关组的随时间变化。
# 例如,让我们将一天内的工作进行分类,比如睡觉,吃饭,工作和玩耍。 考虑以下代码:
days = [1,2,3,4,5]
sleeping =[7,8,6,11,7]
eating = [2,3,4,3,2]
working =[7,8,7,2,2]
playing = [8,5,7,8,13]
#统计这五天来每一天的时间安排
plt.plot([],[],color='m', label='Sleeping', linewidth=5)
plt.plot([],[],color='c', label='Eating', linewidth=5)
plt.plot([],[],color='r', label='Working', linewidth=5)
plt.plot([],[],color='k', label='Playing', linewidth=5)
plt.stackplot(days, sleeping,eating,working,playing, colors=['m','c','r','k'])
plt.xlabel('x')
plt.ylabel('y')
plt.title('Stack Plot')
plt.legend()
plt.show()

 

#饼图是指圆形图,它被分解成段,即饼图。
# 它基本上用于显示百分比或比例数据,其中每个饼图片代表一个类别。 我们来看看下面的例子:
slices = [7,2,2,13]
activities = ['sleeping','eating','working','playing']
cols = ['c','m','r','b']
plt.pie(slices,  labels=activities,  colors=cols,  startangle=90,  shadow= True,  explode=(0,0.1,0,0),  autopct='%1.1f%%')
plt.title('Pie Plot')
plt.show()
#在上面的饼图中,我将圆圈划分为4个扇区或切片,分别代表相应的类别
# (玩耍,睡觉,吃饭和工作)以及他们持有的百分比。
# 现在,如果您注意到这些切片最多可累加24小时,但饼图切片的计算会自动完成。
# 通过这种方式,饼图非常有用,因为您不必是计算饼图的百分比或切片的人。

#matplotlib绘制多个图形单独显示
import numpy as np
import matplotlib.pyplot as plt

#创建自变量数组
x= np.linspace(0,2*np.pi,500)
#创建函数值数组
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.sin(x*x)
#开一个窗口
plt.figure()
'''
意思是在一个2行2列共4个子图的图中,定位第1个图来进行操作(画图)。
最后面那个1表示第1个子图。那个数字的变化来定位不同的子图
'''
#第一行第一列图形
ax1 = plt.subplot(2,2,1)
#第一行第二列图形
ax2 = plt.subplot(2,2,2)
#第二行
ax3 = plt.subplot(2,1,2)
#选择ax1
plt.sca(ax1)
#绘制红色曲线
plt.plot(x,y1,color='red')
#限制y坐标轴范围
plt.ylim(-1.2,1.2)
#选择ax2
plt.sca(ax2)
#绘制蓝色曲线
plt.plot(x,y2,'b--')
plt.ylim(-1.2,1.2)
#选择ax3
plt.sca(ax3)
plt.plot(x,y3,'g--')
plt.ylim(-1.2,1.2)
plt.show()

# figure图的嵌套
import matplotlib.pyplot as plt

# 定义figure
fig = plt.figure()

# 定义数据
x = [1, 2, 3, 4, 5, 6, 7]
y = [1, 3, 4, 2, 5, 8, 6]

# figure的百分比, 从figure 10%的位置开始绘制, 宽高是figure的80%
left, bottom, width, height = 0.1, 0.1, 0.8, 0.8
# 获得绘制的句柄
ax1 = fig.add_axes([left, bottom, width, height])
# 绘制点(x,y)
ax1.plot(x, y, 'r')
ax1.set_xlabel('x')
ax1.set_ylabel('y')
ax1.set_title('test')


# 嵌套方法一
# figure的百分比, 从figure 10%的位置开始绘制, 宽高是figure的80%
left, bottom, width, height = 0.2, 0.6, 0.25, 0.25
# 获得绘制的句柄
ax2 = fig.add_axes([left, bottom, width, height])
# 绘制点(x,y)
ax2.plot(x, y, 'r')
ax2.set_xlabel('x')
ax2.set_ylabel('y')
ax2.set_title('part1')


# 嵌套方法二
plt.axes([bottom, left, width, height])
plt.plot(x, y, 'r')
plt.xlabel('x')
plt.ylabel('y')
plt.title('part2')

plt.show()

# matplotlib模块数据可视化-多图布局,分格显示
# 通过subplot2grid实现¶
import matplotlib.pyplot as plt


plt.figure()
# 通过栅格的形式创建布局方式,(3,3)创建3x3的布局形式,(0,0)绘制的位置,0行0列的位置绘制
# colspan:表示跨几列 rowspan:表示跨几行
ax1 = plt.subplot2grid((3, 3), (0, 0), colspan=3)
# 在ax1图中绘制一条坐标(1,1)到坐标(2,2)的线段
ax1.plot([1, 2], [1, 2])
# 设置ax1的标题  现在xlim、ylim、xlabel、ylabel等所有属性现在只能通过set_属性名的方法设置
ax1.set_title('ax1_title')  # 设置小图的标题

ax2 = plt.subplot2grid((3, 3), (1, 0), colspan=2)
ax3 = plt.subplot2grid((3, 3), (1, 2), rowspan=2)
ax4 = plt.subplot2grid((3, 3), (2, 0))
ax5 = plt.subplot2grid((3, 3), (2, 1))
# 给对应的图绘制内容,这里只给ax4图绘制,属性通过set_xxx的模式设置
ax4.scatter([1, 2], [2, 2])
ax4.set_xlabel('ax4_x')
ax4.set_ylabel('ax4_y')
plt.show()

猜你喜欢

转载自blog.csdn.net/weixin_38241876/article/details/84953805