速发国际365的最新网站-百特365平台可靠吗-日博365投注网

matplotlib绘制各种图形,看这一篇就够了!

matplotlib绘制各种图形 原创不易,你的点赞评价加关注就是我更新下去的最大动力! 文章目录 matplotlib绘制各种图形1. 导入相关包2. 线图:plot()2.

matplotlib绘制各种图形,看这一篇就够了!

matplotlib绘制各种图形

原创不易,你的点赞评价加关注就是我更新下去的最大动力!

文章目录

matplotlib绘制各种图形1. 导入相关包2. 线图:plot()2.1 用plot方法画出x=(0,10)间sin的图像2.2 用点加虚线的方式画出x=(0,10)间sin的图像2.3 同时绘制cos和sin图像在同一图中2.4 绘制折线图

3. 散点图3.1 绘制两组100个随机数的散点图3.2 增加颜色,大小,透明度设置 -- 气泡图3.3 散点图分三类并显示图例4.1 简单垂直条形图4.2 简单水平条形图4.3 簇状条形图4.4 堆叠条形图

5. 箱线图:barplot()5.1 绘制箱线图5.2 绘制不同分组的箱线图

6. 饼图:pie()6.1 绘制最简单的饼图6.2 为饼图添加一些参数

7. 直方图和密度图:hist()7.1 绘制简单频数直方图7.2 绘制累计频率直方图7.3 在直方图基础上,添加正态分布曲线和核密度曲线7.4 绘制堆叠直方图

8. 多图合并显示:subplot()和subplots()8.1 subplot()函数多次绘制多图8.2 不同画布分开绘制8.3 subplots()函数一次绘制多图8.4 添加横纵轴名称及标题

9. 随机矩阵画图9.1 绘制简单随机矩阵图9.2 随机矩阵图添加colorbar

10. 图表动态刷新:ion()和ioff()案例应用第一题:绘制多个统计图形的组合展示

本节我们将开始讲述各种不同的plot的方式。之前我们讲到了如何plot线,今天我们讲述如何画出散点图、柱状图、条形图、直方图等。学完本章之后,小伙伴们就基本能够应对工作和学习中大部分的画图场景啦。

本章知识点归纳如下:

导入相关包线图:plot()散点图:scatter()条形图:bar()箱线图:barplot()饼图:pie()直方图和密度图:hist()多图合并显示:subplot()和subplots()随机矩阵画图:imshow()图表动态刷新:ion()和ioff() 小作业:

绘制多个图形的组合展示;

1. 导入相关包

首先,先引入matplotlib.pyplot简写作plt,再引入模块numpy用来产生一些随机数据。

import numpy as np

import matplotlib.pyplot as plt

import matplotlib.mlab as mlab

import matplotlib as mpl

from scipy.stats import norm

# 中文乱码的处理

plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']# 设置微软雅黑字体

plt.rcParams['axes.unicode_minus'] = False # 避免坐标轴不能正常的显示负号

2. 线图:plot()

函数功能:展现变量的变化趋势调用方法:plt.plot(x, y, linestyle, linewidth,color,marker, markersize, markeredgecolor, markerfactcolor, label, alpha)

x:指定折线图的x轴数据;y:指定折线图的y轴数据;linestyle:指定折线的类型,可以是实线、虚线、点虚线、点点线等,默认文实线;linewidth:指定折线的宽度marker:可以为折线图添加点,该参数是设置点的形状;markersize:设置点的大小;markeredgecolor:设置点的边框色;markerfactcolor:设置点的填充色;label:为折线图添加标签,类似于图例的作用;

2.1 用plot方法画出x=(0,10)间sin的图像

x = np.linspace(0, 10, 30)

plt.plot(x, np.sin(x))

plt.show()

2.2 用点加虚线的方式画出x=(0,10)间sin的图像

plt.plot(x, np.sin(x), linestyle='--', marker='o')

plt.show()

#其他line的属性:如color,linestyle,linewidth,marker,可参考以下资料:

#https://blog.csdn.net/dss_dssssd/article/details/84430024

2.3 同时绘制cos和sin图像在同一图中

两条线的要求如下:

sin曲线:蓝色,实线,’+'号表示;cos曲线:绿色,虚线,’*'号表示;

plt.plot(x, np.sin(x), color='b', linestyle='-', marker='+', label='sin(x)') #或'b-+'

plt.plot(x, np.cos(x), color='g', linestyle='--', marker='*', label='cos(x)') #或'g--*'

plt.legend(loc='upper right')

plt.show()

#fmt:6种组合

# [color][marker][line],3种任意组合为6种可能,每个都是可选的,每个属性可以选择写或者不写,而且与组合中它们所在的位置顺序无关;

2.4 绘制折线图

y = np.random.randn(100)

x = np.arange(100)

plt.plot(x,y)

plt.show()

3. 散点图

函数功能:散点图,寻找变量之间的关系调用方法:plt.scatter(x, y, s, c, marker, cmap, norm, alpha, linewidths, edgecolorsl)参数说明:

x: x轴数据y: y轴数据s: 散点大小c: 散点颜色marker: 散点图形状cmap: 指定某个colormap值,该参数一般不用,用默认值alpha: 散点的透明度linewidths: 散点边界线的宽度edgecolors: 设置散点边界线的颜色

3.1 绘制两组100个随机数的散点图

x = np.random.randn(100)

y = np.random.randn(100)

plt.scatter(x, y)

plt.show()

3.2 增加颜色,大小,透明度设置 – 气泡图

#设置画布大小

plt.figure(figsize = (10, 6))

#设置颜色

colors = np.random.randn(100)

plt.scatter(x, y,

#大小

s = np.power(10*x + 20*y, 2),

#颜色

c = colors,

#标注

marker = 'o',

#指定某个colormap值

cmap=mpl.cm.RdYlBu,

#透明度

alpha = 0.9)

plt.show()

3.3 散点图分三类并显示图例

#设置画布大小

plt.figure(figsize=(10, 6), dpi=80)

colors = ['r', 'y', 'b'] #设置颜色

markers = ['*', 'o', 'x'] #设置标注

for i in range(0,3):

y = np.random.rand(100)

plt.scatter(x, y, s=60, c=colors[i], marker=markers[i])

plt.legend(['class1', 'class2', 'class3'], loc='upper right')

plt.show()

在本期内容中,我们先从条形图开始,条形图实际上是用来表示分组(或离散)变量的可视化,可以使用matplotlib模块中的bar函数完成条形图的绘制。

函数功能:条形图,寻找变量之间的关系

调用方法:plt.bar(x, y, width,color, edgecolor, bottom, linewidth, align, tick_label, align)

参数说明:

x:指定x轴上数值y:指定y轴上的数值width:表示条形图的宽度,取值在0~1之间,默认为0.8color:条形图的填充色edgecolor:条形图的边框颜色bottom:百分比标签与圆心距离linewidth:条形图边框宽度tick_label:条形图的刻度标签align:指定x轴上对齐方式,“center”,"lege"边缘

4.1 简单垂直条形图

#2020年四大直辖市GDP水平

GDP = [36102,38700,14083,25002]

city = ['北京市', '上海市', '天津市', '重庆市']

plt.bar(city, GDP, align='center', color='steelblue', alpha=0.8)

plt.ylabel('GDP')

plt.title('2020年四大直辖市GDP条形图')

plt.ylim([10000, 42000])

# 为每个条形图添加数值标签:ha='center'

for x,y in enumerate(GDP):

plt.text(x, y+200, '%s'%y, ha='center')

plt.show()

4.2 简单水平条形图

plt.barh(city, GDP, align='center', color='steelblue', alpha=0.8)

plt.xlabel('GDP')

plt.title('2020年四大直辖市GDP水平条形图')

plt.xlim([10000, 42000])

# 为每个条形图添加数值标签:va='center'

for x,y in enumerate(GDP):

plt.text(y+200, x, '%s' %y, va='center')

plt.show()

水平条形图的绘制与垂直条形图的绘制步骤一致,只是调用了barh函数来完成。需要注意的是,条形图的数值标签设置有一些不一样,需要将标签垂直居中显示,使用va参数即可。

4.3 簇状条形图

#2019-2020年四大直辖市GDP对比条形图

GDP_2019 = [35371, 38155, 14104, 23606]

GDP_2020 = [36102, 38700, 14083, 25002]

bar_width = 0.4

# 绘图

plt.bar(np.arange(4), GDP_2019, label = '2019年', color = 'steelblue', alpha = 0.8, width = bar_width)

plt.bar(np.arange(4)+bar_width , GDP_2020, label = '2020年', color = 'indianred', alpha = 0.8, width = bar_width)

# 添加轴标签

plt.xlabel('城市')

plt.ylabel('GDP')

plt.title('2019-2020年四大直辖市GDP对比条形图')

#增加刻度标签

plt.xticks(np.arange(4)+0.15, city)

#设置y轴的刻度范围

plt.ylim([0, 42000])

# 为每个条形图添加数值标签

for x2019, y2019 in enumerate(GDP_2019):

plt.text(x2019-0.2, y2019+100, '%s' %y2019)

for x2020,y2020 in enumerate(GDP_2020):

plt.text(x2020+0.2, y2020+100, '%s' %y2020)

#显示图例

plt.legend(loc='upper right')

plt.show()

4.4 堆叠条形图

#将上面簇状条形图转换成堆叠条形图

# 绘图

plt.bar(city, GDP_2019, label = '2019年', color = 'steelblue', alpha = 0.8, width = bar_width)

plt.bar(city, GDP_2020, label = '2020年', color = 'indianred', alpha = 0.8, width = bar_width, bottom=GDP_2019)

# 添加轴标签

plt.xlabel('城市')

plt.ylabel('GDP')

plt.title('2019-2020年四大直辖市GDP堆叠条形图')

#设置y轴的刻度范围

plt.ylim([0, 80000])

# 为每个条形图添加数值标签

for x2019, y2019 in enumerate(GDP_2019):

plt.text(x2019-0.15, y2019 + 10000, '%s' %y2019)

for x2020,y2020 in enumerate(GDP_2020):

plt.text(x2020-0.15, y2020 - 12000, '%s' %y2020)

#显示图例

plt.legend(loc='upper right')

plt.show()

5. 箱线图:barplot()

函数功能:反映数据的异常情况;主要用于分析数据内部的分布状态或分散状态,包括上下限、各分位数、异常值;调用方法:plt.boxplot(x, notch=None, sym=None, vert=None, whis=None, positions=None, widths=None, patch_artist=None, meanline=None, showmeans=None, showcaps=None, showbox=None, showfliers=None, boxprops=None, labels=None, flierprops=None, medianprops=None, meanprops=None, capprops=None, whiskerprops=None)参数说明:

x:指定要绘制箱线图的数据;notch:是否是凹口的形式展现箱线图,默认非凹口;sym:指定异常点的形状,默认为+号显示;vert:是否需要将箱线图垂直摆放,默认垂直摆放;whis:指定上下须与上下四分位的距离,默认为1.5倍的四分位差;positions:指定箱线图的位置,默认为[0,1,2…];widths:指定箱线图的宽度,默认为0.5;patch_artist:是否填充箱体的颜色;meanline:是否用线的形式表示均值,默认用点来表示;showmeans:是否显示均值,默认不显示;showcaps:是否显示箱线图顶端和末端的两条线,默认显示;showbox:是否显示箱线图的箱体,默认显示;showfliers:是否显示异常值,默认显示;boxprops:设置箱体的属性,如边框色,填充色等;

boxprops = {‘color’:‘g’, ‘facecolor’:‘yellow’}‘color’ : ‘g’ 箱子外框的颜色‘facecolor’ : ‘yellow’ 箱子填充的颜色 labels:为箱线图添加标签,类似于图例的作用;flierprops:设置异常值的属性,如异常点的形状、大小、填充色等;medianprops:设置中位数的属性,如线的类型、粗细等;meanprops:设置均值的属性,如点的大小、颜色等;capprops:设置箱线图顶端和末端线条的属性,如颜色、粗细等;whiskerprops:设置须的属性,如颜色、粗细、线的类型等;

5.1 绘制箱线图

#利用numpy库生成100个服从标准正态分布随机数

x = np.random.normal(0,1,100)

plt.boxplot(x, # 指定绘图数据

patch_artist = True, # 要求用自定义颜色填充盒形图,默认白色填充

showmeans = True, # 以点的形式显示均值

boxprops = {'color':'black', 'facecolor':'#9999ff'},# 设置箱体属性,填充色和边框色

flierprops = {'marker':'o', 'markerfacecolor':'red', 'color':'black'},# 设置异常值属性,点的形状、填充色和边框色

meanprops = {'marker':'D', 'markerfacecolor':'indianred'},# 设置均值点的属性,点的形状、填充色

medianprops = {'linestyle':'--', 'color':'orange'})# 设置中位数线的属性,线的类型和颜色

# 去除箱线图的上边框与右边框的刻度标签

plt.tick_params(top = 'off', right = 'off')

plt.show()

5.2 绘制不同分组的箱线图

#利用 numpy库生成三组正态分布随机数

x = [np.random.normal(0,std,100) for std in range(1,4)]

# 绘图

plt.boxplot(x,

patch_artist = True,

labels = ['一组','二组','三组'], # 添加具体的标签名称

showmeans=True,

boxprops = {'color':'black','facecolor':'#9999ff'},

flierprops = {'marker':'o','markerfacecolor':'red','color':'black'},

meanprops = {'marker':'D','markerfacecolor':'indianred'},

medianprops = {'linestyle':'--','color':'orange'})

# 显示图形

plt.show()

6. 饼图:pie()

函数功能:表示离散变量各水平占比情况调用方法:plt.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=None, radius=None, counterclock=True, wedgeprops=None, textprops=None, center=(0, 0), frame=False)参数说明:

x:指定绘图的数据explode:指定饼图某些部分的突出显示,即呈现爆炸式labels:为饼图添加标签说明,类似于图例说明colors:指定饼图的填充色autopct:自动添加百分比显示,可以采用格式化的方法显示pctdistance:设置百分比标签与圆心的距离shadow:是否添加饼图的阴影效果labeldistance:设置各扇形标签(图例)与圆心的距离;startangle:设置饼图的初始摆放角度;radius:设置饼图的半径大小;counterclock:是否让饼图按逆时针顺序呈现;wedgeprops:设置饼图内外边界的属性,如边界线的粗细、颜色等;textprops:设置饼图中文本的属性,如字体大小、颜色等;center:指定饼图的中心点位置,默认为原点frame:是否要显示饼图背后的图框,如果设置为True的话,需要同时控制图框x轴、y轴的范围和饼图的中心位置;

6.1 绘制最简单的饼图

x = [9823, 5601, 3759, 1400, 450]

plt.pie(x)

plt.show()

6.2 为饼图添加一些参数

#构造数据:某城镇受教育程度

education = [9823, 5601, 3759, 1400, 450]

labels = ['小学', '初中', '高中', '大学', '研究生及以上']

explode = [0,0,0,0.2,0.3] # 用于突出显示特定人群

colors=['#9999ff','#ff9999','#7777aa','#2442aa','#dd5555'] # 自定义颜色

# 将横、纵坐标轴标准化处理,保证饼图是一个正圆,否则为椭圆

plt.axes(aspect='equal')

# 绘制饼图

plt.pie(x = education, # 绘图数据

explode=explode, # 突出显示特定人群

labels=labels, # 添加教育水平标签

colors=colors, # 设置饼图的自定义填充色

autopct='%.1f%%', # 设置百分比的格式,这里保留一位小数

pctdistance=0.8, # 设置百分比标签与圆心的距离

labeldistance = 1.15, # 设置教育水平标签与圆心的距离

startangle = 180, # 设置饼图的初始角度

radius = 1.5, # 设置饼图的半径

counterclock = False, # 是否逆时针,这里设置为顺时针方向

wedgeprops = {'linewidth': 1.5, 'edgecolor':'green'},# 设置饼图内外边界的属性值

textprops = {'fontsize':12, 'color':'k'}, # 设置文本标签的属性值

center = (1.8,1.8), # 设置饼图的原点

frame = 0 )# 是否显示饼图的图框,这里设置不显示

# 删除x轴和y轴的刻度

plt.xticks(())

plt.yticks(())

# 显示图形

plt.show()

7. 直方图和密度图:hist()

函数功能:判定数据的分布情况调用方法:plt.hist(x, bins=10, range=None, normed=False, weights=None, cumulative=False, bottom=None, histtype=‘bar’, align=‘mid’, orientation=‘vertical’, rwidth=None, log=False, color=None, label=None, stacked=False)参数说明:

x:指定要绘制直方图的数据;bins:指定直方图条形的个数;range:指定直方图数据的上下界,默认包含绘图数据的最大值和最小值;density:是否将直方图的频数转换成频率;weights:该参数可为每一个数据点设置权重;cumulative:是否需要计算累计频数或频率;bottom:可以为直方图的每个条形添加基准线,默认为0;histtype:指定直方图的类型,默认为bar,除此还有’barstacked’, ‘step’, ‘stepfilled’;align:设置条形边界值的对其方式,默认为mid,除此还有’left’和’right’;orientation:设置直方图的摆放方向,默认为垂直方向;rwidth:设置直方图条形宽度的百分比;log:是否需要对绘图数据进行log变换;color:设置直方图的填充色;label:设置直方图的标签,可通过legend展示其图例;stacked:当有多个数据时,是否需要将直方图呈堆叠摆放,默认水平摆放;

7.1 绘制简单频数直方图

data = np.random.randn(1000)

plt.hist(data, # 绘图数据

bins = 20, # 指定直方图的条形数为20个

color = 'steelblue', # 指定填充色

edgecolor = 'k', # 指定直方图的边界色

label = '直方图' )# 为直方图呈现标签

# 去除图形顶部边界和右边界的刻度

plt.tick_params(top='off', right='off')

# 显示图例

plt.legend()

# 显示图形

plt.show()

7.2 绘制累计频率直方图

plt.hist(data, # 绘图数据

bins = 20, # 指定直方图的组距

density = True, # 设置为频率直方图

cumulative = True, # 积累直方图

color = 'steelblue', # 指定填充色

edgecolor = 'k', # 指定直方图的边界色

label = '直方图')# 为直方图呈现标签

# 设置坐标轴标签和标题

plt.title('累计频率直方图')

plt.xlabel('x轴')

plt.ylabel('累计频率')

# 去除图形顶部边界和右边界的刻度

plt.tick_params(top='off', right='off')

# 显示图例

plt.legend(loc = 'best')

# 显示图形

plt.show()

7.3 在直方图基础上,添加正态分布曲线和核密度曲线

#设置随机种子

np.random.seed(1)

#随机生成100个1-100之间的整数

data = np.random.randint(1, 100, 100)

# 正态分布图

plt.hist(data, # 绘图数据

bins = 20, # 指定直方图的组距

density = True, # 设置为频率直方图

color = 'steelblue', # 指定填充色

edgecolor = 'k') # 指定直方图的边界色

# 生成正态曲线的数据

x1 = np.linspace(data.min(), data.max(), 1000)

normal = norm.pdf(x1, data.mean(), data.std())

# 绘制正态分布曲线

line1, = plt.plot(x1, normal, 'r-', linewidth = 2)

# 生成核密度曲线的数据

kde = mlab.GaussianKDE(data)

x2 = np.linspace(data.min(), data.max(), 1000)

# 绘制核密度曲线

line2, = plt.plot(x2,kde(x2), 'g-', linewidth = 2)

# 显示图例

plt.legend([line1, line2], ['正态分布曲线','核密度曲线'], loc='best')

# 显示图形

plt.show()

7.4 绘制堆叠直方图

#设置随机种子

np.random.seed(1)

#利用 numpy库生成两组随机数

data = [np.random.randint(0, 100, 100) for i in range(1,3)]

# 绘制堆叠直方图

plt.hist(data, bins = 20, label = ['class1', 'class2'], color = ['steelblue','orange'], alpha = 0.7, stacked = True)

# 显示图例

plt.legend()

# 显示图形

plt.show()

8. 多图合并显示:subplot()和subplots()

1.在一张画布上输出多个图形,在Matplotlib库中有当前的图形(figure)以及当前轴(axes)概念2.其对应的就是当前画布以及当前子图,在一张画布(figure)上可以绘制多个子图(axes)3.绘制多图通常采用subplot()函数或subplots()函数

(1)subplot()函数,通常含有三个参数,子图的行数、列数以及第几个子图

不足:每次在新的子图上画图时,都得调用subplot()函数 (2)subplots()函数,一次性就生成多个子图

set_title()函数 子图中设置子图标题set_xlabel()函数 子图中设置X轴标签set_ylabel()函数 子图中设置Y轴标签

8.1 subplot()函数多次绘制多图

# 绘制第一个子图:折线图

ax1 = plt.subplot(221)

plt.plot([1, 2, 3], [2, 4, 6])

# 绘制第二个子图:柱状图

ax2 = plt.subplot(222)

plt.bar([1, 2, 3], [2, 4, 6])

# 绘制第三个子图:散点图

ax3 = plt.subplot(223)

plt.scatter([1, 3, 5], [2, 4, 6])

# 绘制第四个子图:直方图

ax4 = plt.subplot(224)

plt.hist([2, 2, 2, 3, 4]);

8.2 不同画布分开绘制

# 第一张画布

plt.figure(1)

ax1 = plt.subplot(121) # 第一张画布的第一个子图

plt.plot([1, 2, 3], [2, 4, 6])

ax2 = plt.subplot(122) # 第一张画布的第二个子图

plt.plot([2, 4, 6], [4, 8, 10])

# 第二张画布

plt.figure(2)

plt.plot([1, 2, 3], [4, 5, 6]);

8.3 subplots()函数一次绘制多图

fig, axes = plt.subplots(2, 2, figsize=(8, 8))

ax1, ax2, ax3, ax4 = axes.flatten()

ax1.plot([1, 2, 3], [2, 4, 6]) # 绘制第一个子图

ax2.bar([1, 2, 3], [2, 4, 6]) # 绘制第二个子图

ax3.scatter([1, 3, 5], [2, 4, 6]) # 绘制第三个子图

ax4.hist([2, 2, 2, 3, 4]); # 绘制第四个子图

8.4 添加横纵轴名称及标题

fig, axes = plt.subplots(2, 2, figsize=(10, 10))

ax1, ax2, ax3, ax4 = axes.flatten()

ax1.plot([1, 2, 3], [2, 4, 6]) # 绘制第一个子图

ax1.set_title('子图1')

ax1.set_xlabel('日期')

ax1.set_ylabel('分数')

ax2.bar([1, 2, 3], [2, 4, 6]) # 绘制第二个子图

ax2.set_title('子图2')

ax2.set_xlabel('日期')

ax2.set_ylabel('分数')

ax3.scatter([1, 3, 5], [2, 4, 6]) # 绘制第三个子图

ax3.set_title('子图3')

ax3.set_xlabel('日期')

ax3.set_ylabel('分数')

ax4.hist([2, 2, 2, 3, 4]) # 绘制第四个子图

ax4.set_title('子图4')

ax4.set_xlabel('日期')

ax4.set_ylabel('分数');

9. 随机矩阵画图

这一节讲怎样在matplotlib中打印出图像。这里我们打印出的是纯粹的数字,而非自然图像。

9.1 绘制简单随机矩阵图

# 首先生成一个 3x3 的 2D-array ,也就是三行三列的格子,array 中的每个值经过colormap与一个颜色对应并填充在格子中

a = np.array([0.313660827978, 0.365348418405, 0.423733120134,

0.365348418405, 0.439599930621, 0.525083754405,

0.423733120134, 0.525083754405, 0.651536351379]).reshape(3,3)

plt.imshow(a,

#画图方式

interpolation='nearest',

#指定某个colormap值

cmap='RdBu',

#选择原点的位置

origin='lower')

9.2 随机矩阵图添加colorbar

为我们显示不同颜色的区块所对应的具体数值。其中shrink参数可以用来调整 colorbar 的长度,这里我们使colorbar的长度变短为原来的92%

plt.imshow(a, interpolation='nearest', cmap='RdBu', origin='lower')

plt.colorbar(shrink=.92)

plt.xticks(())

plt.yticks(())

plt.show()

10. 图表动态刷新:ion()和ioff()

交互模式:

我们在训练模型的时候,可能需要去不停去更新图表数据;

# jupyter中动态显示需要

from IPython import display

x, y1, y2 = [], [], []

plt.ion() # 交互模式打开

for i in np.linspace(0,20,500):

x.append(i)

y1.append(np.cos(i))

y2.append(np.sin(i))

plt.figure(figsize=(12, 2))

plt.clf()

plt.ylim(-1, 1) # 设置y轴刻度值最大最小值

plt.plot(x, y1, '--r')

plt.plot(x, y2, 'g')

plt.pause(0.1)

display.clear_output(wait=True) # 清除输出

plt.ioff() # 关闭交互模式

案例应用

第一题:绘制多个统计图形的组合展示

要求:

(1)生成两行三列15×10的6个子图;(2)第一个子图:

数据:x=[1, 2, 3]; y=[0.6, 0.8, 0.2];图形:设置三种不同颜色,绘制条形图; (3)第二个子图:

绘制sin(x)和cos(x)的图像;样式:

横轴设为’x’,纵轴设为’f(x)’;添加图例:sin(x)和cos(x);颜色不同,线型不同; 图形:绘制线图; (4)第三个子图:

数据:x=[1,2,3,4,5,6,7,8]; y= [3,1,4,5,8,9,7,2]样式:

纵轴标签设为:[‘A’,‘B’,‘C’,‘D’,‘E’,‘F’,‘G’,‘H’] 图形:绘制水平条形图; (5)第四个子图:

生成两组服从正态分布的100个随机数,设为x,y;样式:

颜色主题:采用mpl.cm.RdYlBu;标注:采用’o’; 图形:绘制气泡图; (6)第五个子图:

数据:

x = np.linspace(0.5,2*np.pi,20)y = np.random.randn(20) 样式:

棉棒样式:’-.’;棉棒末端的样式:‘o’;指定基线的样式:’-’; 图形:绘制棉棒图; (7)第六个子图:

数据:

elements = [“Flour”,“Sugar”,“Cream”,“Strawberry”,“Nuts”]weight1 = [40,15,20,10,15]weight2 = [30,25,15,20,10] 样式:

颜色设为:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00"]百分数保留一位小数;其他参数自行发挥; 图形:绘制双层环形图;

plt.figure(figsize=(15,10))

# (1)生成两行三列15×10的6个子图;

# (2)第一个子图:

# 数据:x=[1, 2, 3]; y=[0.6, 0.8, 0.2];

# 图形:设置三种不同颜色,绘制条形图;

plt.subplot(231)

x=[1,2,3]

y=[0.6,0.8,0.2]

plt.bar(x,y,color=['r','b','g'])

# (3)第二个子图:

# 绘制sin(x)和cos(x)的图像;

# 样式:

# 横轴设为'x',纵轴设为'f(x)';

# 添加图例:sin(x)和cos(x);

# 颜色不同,线型不同;

# 图形:绘制线图;

import math

y1=[]

y2=[]

for i in x:

y1.append(math.sin(i))

y2.append(math.cos(i))

plt.subplot(232)

plt.plot(x,y1,label='sin(x)',color='r',linestyle='-')

plt.plot(x,y2,label='cos(x)',color='b',linestyle='--')

plt.legend(loc=0)

# (4)第三个子图:

# 数据:x=[1,2,3,4,5,6,7,8]; y= [3,1,4,5,8,9,7,2]

# 样式:

# 纵轴标签设为:['A','B','C','D','E','F','G','H']

# 图形:绘制水平条形图;

x=[1,2,3,4,5,6,7,8]

y= [3,1,4,5,8,9,7,2]

plt.subplot(233)

plt.barh(x,y)

# (5)第四个子图:

# 生成两组服从正态分布的100个随机数,设为x,y;

# 样式:

# 颜色主题:采用mpl.cm.RdYlBu;

# 标注:采用'o';

# 图形:绘制气泡图;

x=np.random.normal(0,1,100)

y=np.random.normal(-1,1,100)

plt.subplot(234)

plt.scatter(x,y,marker = 'o',

s= np.power(5*x + 5*y, 2),#设置大小

#指定某个colormap值

cmap=mpl.cm.RdYlBu,alpha=0.9)

# (6)第五个子图:

# 数据:

# x = np.linspace(0.5,2*np.pi,20)

# y = np.random.randn(20)

# 样式:

# 棉棒样式:'-.';

# 棉棒末端的样式:'o';

# 指定基线的样式:'-';

# 图形:绘制棉棒图;

x = np.linspace(0.5,2*np.pi,20)

y = np.random.randn(20)

plt.subplot(235)#绘制棉棒图

# plt.stem(a, b, linefmt="-.", markerfmt="o", basefmt="-")

plt.stem(x,y,linefmt='-.',markerfmt='o',basefmt='-')

# (7)第六个子图:

# 数据:

# elements = ["Flour","Sugar","Cream","Strawberry","Nuts"]

# weight1 = [40,15,20,10,15]

# weight2 = [30,25,15,20,10]

# 样式:

# 颜色设为:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00"]

# 百分数保留一位小数;

# 其他参数自行发挥;

# 图形:绘制双层环形图;

# plt.axes(aspect='equal')

ax1=plt.subplot(236)

elements = ["Flour","Sugar","Cream","Strawberry","Nuts"]

weight1 = [40,15,20,10,15]

weight2 = [30,25,15,20,10]

colors=["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00"]

ax1.pie(weight1,radius=1.3,labels=elements,colors=colors,autopct='%.1f%%')

ax1.pie(weight2,radius=1,colors=colors,autopct='%.1f%%')

← 上一篇: 滴滴打车,如何取消订单?如何取消预约?
下一篇: 世预赛亚洲区综合:国足告别“美加墨” 约旦、乌兹别克斯坦首次入围决赛圈 →

相关推荐

一分钟科普

一分钟科普

太阳系八大行星 八大行星(8 Planets),是指太阳系的八个大行星,按照离太阳的距离从近到远,它们依次为水星(☿)、金星(♀)、地球(⊕

所有产品

所有产品

小米商城 | 小米澎湃OS | 米家 | 多看 | 游戏 | 音乐 | 政企服务 | 小米天猫店 | 小米集团隐私政策 | 小米公司儿童信息保护规则 | 小米商城隐私政

倩女幽魂强化15到20要多少钱 倩女幽魂装备强化攻略:从 15 到 20,费用、材料与运气的博弈

倩女幽魂强化15到20要多少钱 倩女幽魂装备强化攻略:从 15 到 20,费用、材料与运气的博弈

哎呀,说到倩女幽魂这款游戏,我真是又爱又恨!特别是当我想要把装备从强化15提升到20的时候,那个心痛的感觉啊,简直无法用言语来形容。

《羁绊者 Kiznaiver》

《羁绊者 Kiznaiver》

故事发生在虚构的、在废弃堆填区上兴建的未来城市-洲笼市。这个城市曾经发展急促,但现在人口正逐年减少。 在暑假前数天,一位神秘又无

萨摩耶换毛期多久

萨摩耶换毛期多久

徐灿 执业兽医师 通常犬瘟热的治疗周期是7-12天左右,度过危险期一般是九天以上。但是需要结合狗狗的实际情况进行判断,因为犬瘟热属于病

十大最稀有的鱼类盘点,中国特有上榜多个,第一在地球生活超过6万年

十大最稀有的鱼类盘点,中国特有上榜多个,第一在地球生活超过6万年

导语:世界上目前发现的鱼类品种虽然高达3万多种,但随着对鱼类的需求量不断增加,过度的捕捞和鱼类生存环境的恶化,导致很多鱼类的种群