南海做网站,浙江建设信息港电工证查询,logo制作免费版,手机网站html本博文来自于网络收集#xff0c;如有侵权请联系删除 使用matplotlib绘图 1 常用函数汇总1.1 plot1.2 legend1.3 scatter1.4 xlim1.5 xlabel1.6 grid1.7 axhline1.7 axvspan1.8 annotate1.9 text1.10 title 2 常见图形绘制2.1 bar——柱状图2.2 barh——条形图2.3 hist——直…本博文来自于网络收集如有侵权请联系删除 使用matplotlib绘图 1 常用函数汇总1.1 plot1.2 legend1.3 scatter1.4 xlim1.5 xlabel1.6 grid1.7 axhline1.7 axvspan1.8 annotate1.9 text1.10 title 2 常见图形绘制2.1 bar——柱状图2.2 barh——条形图2.3 hist——直方图堆积直方图 阶梯型直方图2.4 pie——饼图示例1示例2内嵌环饼形图 2.5 polar——极线图2.6 scatter——气泡图2.7 stem——棉棒图2.8 boxplot——箱线图示例1示例2 2.9 errorbar——误差棒图 3 常用统计图3.1 堆积柱状图3.2 堆积条形图3.3 并列柱状图3.4 并列条形图3.5 堆积折线图3.6 间断条形图3.7 阶梯图 matplotlib的具体用法
官网的介绍是最全的此处只针对平时常用的绘图进行了记录 1 常用函数汇总
1.1 plot
referencehttps://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.plot.html 函数plt.plot(x, y, c‘r’, marker‘o’, ls‘-’, lw1, ms1, label‘line1’) 参数
x: x轴上的数值y: y轴上的数值marker点的形状c: color, 颜色ls: Line Styles如‘-’‘–’‘-.’‘:’lw: linewidth线条宽度label: 标记图形内容的标签文本
注plt.plot(x, y, ‘r^:’, lw1, ms5, label‘line1’) 点的颜色、形状、线型通常写在一起如 label需要与plt.legend配合使用
1.2 legend
referencehttps://matplotlib.org/stable/api/legend_api.html 函数plt.legend(loc‘best’) 参数
loc图例在途中的位置如‘upper right’, ‘lower left’, ‘upper center’等
代码示例
import matplotlib.pyplot as plt
import numpy as npx np.linspace(0.05, 10, 1000)
y np.sin(x)plt.plot(x, y, markero, ls-, cr, lw1, ms1, labelline1)
# plt.plot(x, y, r^:, lw1, ms5, labelline1)
plt.legend(locbest)
plt.show()1.3 scatter
函数plt.scatter(x, y, c‘b’, label‘scatter1’) 参数
x: x轴上的数值y: y轴上的数值c:颜色label: 标记图形内容的标签文本
import matplotlib.pyplot as plt
import numpy as npx np.linspace(0.05, 10, 50)
y np.sin(x)
y2 np.cos(x)plt.scatter(x, y, cb, labelscatter1)
plt.scatter(x, y2, cr, labelscatter1)
plt.legend()
plt.show()1.4 xlim
函数plt.xlim(xmin, xmax) 参数
xmin: x轴上的最小值ymin: x轴上的最大值平移性plt.ylim(ymin, ymax)
1.5 xlabel
函数plt.xlabel(string) 参数
string: 标签文本内容平移性plt.ylabel(string)
1.6 grid
函数plt.grid(linestyle‘:’, colorr) 参数
linestyle: 网格线的线条风格color: 网格线的线条颜色
1.7 axhline
绘制平行与x轴的水平参考线 函数plt.axhline(y0, c‘b’, ls‘–’, lw2) 参数:
y: 水平参考线的出发点c: 参考线的线条颜色ls: 参考线的线条风格lw: 参考线的线条宽度平移性: plt.axvline(), 绘制平行与y轴的参考线
1.7 axvspan
绘制垂直于x轴的参考区域。 函数plt.axvspan(xmin1, xmax2, facecolor‘y’, alpha0.3) 参数
xmin: 参考区域的起始位置。ymin: 参考区域的终止位置。facecolor: 参看区域的填充颜色。alpha: 参考区域的填充颜色的透明度。平移性: axhspan()
import numpy as np
from matplotlib import pyplot as pltx np.linspace(0.05, 10, 1000)
y np.sin(x)plt.plot(x, y, ls-., cc, labelsin(x))plt.legend()plt.axvspan(xmin4.0, xmax6.0, facecolory, alpha0.3)
plt.axhspan(ymin0.0, ymax0.5, facecolory, alpha0.3)plt.show()1.8 annotate
添加图形内容细节的指向型注释文本。 函数plt.annotate(“maximum”, xy(np.pi / 2, 1), xytext((np.pi / 2) 1, .8), weight“bold”, color‘b’, arrowpropsdict(arrowstyle“-”, connectionstyle“arc3”, color“b”)) 参数
string: 图形内容的注释文本。xy: 被注释图形内容的位置坐标。xytext: 注释文本的位置坐标。weight: 注释文本的字体粗细风格。color: 注释文本的字体颜色。arrowprops: 指示被注释内容的箭头的属性字典。
import matplotlib.pyplot as plt
import numpy as npx np.linspace(0.05, 10, 1000)
y np.sin(x)plt.plot(x, y, ls-., lw2, cg, labelsin(x))
plt.legend()plt.annotate(maximum, xy(np.pi / 2, 1), xytext((np.pi / 2) 1, .8), weightbold, colorblack,arrowpropsdict(arrowstyle-, connectionstylearc3, colorr))plt.show()1.9 text
添加图形内容细节的无指向型注释文本 函数plt.text(4, 0.1, “ysin(x)”, weight“bold”, color“b”) 参数
x: 注释文本内容所在位置的横坐标y: 注释文本内容所在位置的纵坐标string 注释文本内容weight: 注释文本内容的粗细风格color: 注释文本内容的字体颜色
import matplotlib.pyplot as plt
import numpy as npx np.linspace(0.05, 10, 1000)
y np.sin(x)plt.plot(x, y, ls-., lw2, cc, labelsin(x))plt.legend()
plt.text(4, 0.1, ysin(x), weightbold, colorb)
plt.show()1.10 title
添加图形内容的标题 函数plt.title(string) 参数
string: 图形内容的标题文本
2 常见图形绘制
2.1 bar——柱状图
函数plt.bar(x, y, align“center”, color“c”, tick_labelx_label, hatch“/”) 参数
x: 柱状图中的柱体标签值。y: 柱状图中的柱体高度。align: 柱体对齐方式color: 柱体颜色tick_label: 刻度标签值alpha: 柱体的透明度hatch: 柱体的填充样式如/, “\”, “|”, -等符号字符串的符号数量越多柱体的几何图形的密集程度就越高。
import matplotlib as mpl
import matplotlib.pyplot as plt
from plotly.figure_factory import npmpl.rcParams[font.sans-serif] [SimHei]
mpl.rcParams[axes.unicode_minus] Falsex [i for i in range(0, 10, 1)]
y np.random.randint(1, 20, size10)x_label [chr(i) for i in range(97, 9710, 1)]
plt.bar(x, y, aligncenter, colorc, tick_labelx_label, hatch/)plt.xlabel(x)
plt.ylabel(y)
plt.show()2.2 barh——条形图
import matplotlib as mpl
import matplotlib.pyplot as plt
from plotly.figure_factory import npmpl.rcParams[font.sans-serif] [SimHei]
mpl.rcParams[axes.unicode_minus] Falsex [i for i in range(0, 10, 1)]
y np.random.randint(1, 20, size10)x_label [chr(i) for i in range(97, 9710, 1)]
plt.barh(x, y, aligncenter, colorc, tick_labelx_label, hatch/)plt.xlabel(x)
plt.ylabel(y)
plt.show()2.3 hist——直方图
直方图是用来展现连续型数据分布特征的统计图形利用直方图可直观地分析出数据的集中趋势和波动情况。 函数plt.hist(x) 参数
x: 连续型数据输入值bins: 用于确定柱体的个数或是柱体边缘范围color: 柱体的颜色histtype: 柱体类型label: 图例内容rwidth: 柱体宽度
import matplotlib as mpl
import matplotlib.pyplot as plt
from plotly.figure_factory import npmpl.rcParams[font.sans-serif] [SimHei]
mpl.rcParams[axes.unicode_minus] Falsex np.random.randint(0, 10, 100)
y range(0, 6, 1)plt.hist(x, binsy, colorc, histtypebar, rwidth1, alpha0.6)plt.xlabel(x)
plt.ylabel(y)
plt.show()除最后一个柱体的数据范围是闭区间其它柱体的数据范围都是左闭右开区间。 总结柱状图与直方图的区别 直方图描述的是连续型数据的分布柱状图描述的是离散型数据分布柱状图的柱体之间有空隙直方图的柱体之间无空隙。
堆积直方图
import matplotlib as mpl
import matplotlib.pyplot as plt
from plotly.figure_factory import npmpl.rcParams[font.sans-serif] [SimHei]
mpl.rcParams[axes.unicode_minus] Falsex1 np.random.randint(0, 10, 100)
x2 np.random.randint(0, 10, 100)
y range(0, 10, 1)plt.hist([x1, x2], binsy, color[c, y], histtypebar, rwidth1, stackedTrue, alpha0.6)plt.xlabel(x)
plt.ylabel(y)
plt.show()阶梯型直方图
将hist()的histtype改为stepfilled即可绘制阶梯型直方图
import matplotlib as mpl
import matplotlib.pyplot as plt
from plotly.figure_factory import npmpl.rcParams[font.sans-serif] [SimHei]
mpl.rcParams[axes.unicode_minus] Falsex1 np.random.randint(0, 10, 100)
x2 np.random.randint(0, 10, 100)
y range(0, 10, 1)
labels [a, b]
plt.hist([x1, x2], binsy, color[c, y], histtypestepfilled, rwidth1, stackedTrue, labellabels)plt.xlabel(x)
plt.ylabel(y)
plt.legend()
plt.show()2.4 pie——饼图
绘制不同类型数据的百分比通过饼图可以清楚地观察数据的占比情况。 函数plt.pie(soldNums, explodeexplode, labelskinds, autopct“%3.1f%%”, startangle45, shadowTrue, colorscolors) 参数
soldNums: 相当于x并不是参数名称要绘制的百分比列表explode饼片边缘偏离半径的百分比labels: 标记每份饼片的文本标签内容autopct: 饼片文本标签内容对应的数值百分比样式startangle: 从x轴作为起始位置第一个饼片逆时针旋转的角度shadow: 是否绘制饼片的阴影colors: 饼片的颜色其它参数pctdistance: 百分比数值的显示位置以半径长度比例值作为显示位置依据其它参数labeldistance: 标签值的显示位置以半径长度比例值作为显示位置依据
示例1
import matplotlib.pyplot as plt
import matplotlib as mpl
mpl.rcParams[font.sans-serif] [SimHei]
mpl.rcParams[axes.unicode_minus] Falsekinds a, b, c, d
soldNums [0.3, 0.2, 0.4, 0.1]
colors [g, r, b, black]
plt.pie(soldNums, labelskinds, autopct%3.2f%%, startangle60, colorscolors)plt.title(不同类型占比)
plt.show()示例2
import matplotlib.pyplot as plt
import matplotlib as mpl
mpl.rcParams[font.sans-serif] [SimHei]
mpl.rcParams[axes.unicode_minus] Falsekinds a, b, c, d
soldNums [0.3, 0.2, 0.4, 0.1]
colors [g, r, b, black]
explode (0.1, 0.1, 0.1, 0.1)
plt.pie(soldNums, explodeexplode, labelskinds, autopct%3.1f%%, startangle45, shadowTrue, colorscolors)plt.title(不同类型占比)
plt.show()内嵌环饼形图
将饼图嵌套可观察多组数据的比例分布
import matplotlib.pyplot as plt
import matplotlib as mpl
mpl.rcParams[font.sans-serif] [SimHei]
mpl.rcParams[axes.unicode_minus] Falsekinds [a, b, c, d]
weight1 [0.3, 0.2, 0.4, 0.1]
weight2 [0.2, 0.25, 0.35, 0.2]
colors [g, r, b, black]
outer_colors colors
inner_colors colors
wedges1, texts1, autotexts1 plt.pie(weight1, autopct%3.1f%%, radius1, pctdistance0.85, colorsouter_colors, textpropsdict(colorw),wedgepropsdict(width0.3, edgecolorw))
wedges2, texts2, autotexts2 plt.pie(weight2, autopct%3.1f%%, radius0.65, pctdistance0.7, colorsinner_colors, textpropsdict(colorw),wedgepropsdict(width0.3, edgecolorw))
plt.legend(wedges1, kinds, fontsize12, title比例, locbest, bbox_to_anchor(0.6, 0, 0.4, 1))
plt.setp(autotexts1, size12, weightbold)
plt.setp(autotexts2, size12, weightbold)
plt.setp(texts1, size12)
plt.title(不同类型占比)
plt.show()2.5 polar——极线图
在极坐标轴上绘制折线图 函数plt.plot(theta, r) 参数
theta: 每个标记所在射线与极径的夹角。r: 每个标记到原点的距离。
import matplotlib.pyplot as plt
import numpy as npbarSlices 12theta np.linspace(0, 2*np.pi, barSlices, endpointFalse)
r 30*np.random.rand(barSlices)
plt.polar(theta, r, colorchartreuse, linewidth2, marker*, mfcb, ms10)
plt.show()2.6 scatter——气泡图
二维数据借助气泡大小展示三维数据 函数plt.scatter(x, y) 参数
x: x轴上的数值。y: y轴上的数值。c: 散点标记的颜色。cmap: 将浮点数映射成颜色的颜色映射表。
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as npa np.random.randn(50)
b np.random.randn(50)plt.scatter(a, b, snp.power(10*a20*b, 2), cnp.random.rand(50), cmapmpl.cm.RdYlBu, markero)
plt.show()2.7 stem——棉棒图
绘制离散有序数据 函数: plt.stem(x, y) 参数
x: 指定棉棒的x轴基线上的位置y: 绘制棉棒的长度linefmt: 棉棒的样式markerfmt : 棉棒末端的样式basefmt: 指定基线的样式
import matplotlib.pyplot as plt
import numpy as npx np.linspace(0.5, 2*np.pi, 20)
y np.random.randn(20)plt.stem(x, y, linefmt-., markerfmto, basefmt-)
plt.show()2.8 boxplot——箱线图
箱线图是由一个箱体和一对箱须所组成的统计图形。箱体是由第一四分位数、中位数(第二四分位数)和第三分位数所组成的。在箱须的末端之外的数值可以理解为离群值。箱须是对一组数据范围的大致直观描述。
示例1
x: 绘制箱线图的输入数据
import matplotlib.pyplot as plt
import numpy as npx np.random.randn(100)plt.boxplot(x)plt.xticks([1], [x])
plt.ylabel(y)plt.grid(axisy, ls:, lw1, colorblack, alpha0.5)
plt.show()示例2
函数bplot plt.boxplot(testList, whiswhis, widthswidth, sym“o”, labelslabels, patch_artistTrue) 参数
testList: 绘制箱线图的输入数据whis: 四分位间距的倍数用来确定箱须包含数据的范围大小widths: 设置箱体的宽度sym: 离群值的标记样式labels: 每一个数据集的刻度标签patch_artist: 是否给箱体添加颜色
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as npmpl.rcParams[font.sans-serif] [SimHei]
mpl.rcParams[axes.unicode_minus]False # 显示负数testA np.random.randn(1000)
testB np.random.randn(1000)testList [testA, testB]
labels [A, B]
colors [y, g]whis 1.6
width 0.35bplot plt.boxplot(testList, whiswhis, widthswidth, symo, labelslabels, patch_artistTrue)
for patch, color in zip(bplot[boxes], colors):patch.set_facecolor(color)plt.ylabel(随机数值)
plt.grid(axisy, ls:, lw1, colorgray, alpha0.4)
plt.show()2.9 errorbar——误差棒图
绘制y轴方向或是x轴方向的误差范围 函数
x: 数据点的水平位置y: 数据点的垂直位置yerr: y轴方向的数据点的误差计算方法xerr: x轴方向的数据点的误差计算方法
import matplotlib.pyplot as plt
import numpy as npx np.linspace(0.1, 1, 10)
y np.exp(x)plt.errorbar(x, y, fmtbo:, yerr0.2, xerr0.05)plt.xlim(0, 1.1)
plt.show()3 常用统计图
3.1 堆积柱状图
令函数bar中的参数bottomy可输出堆积柱状图
import matplotlib as mpl
import matplotlib.pyplot as pltmpl.rcParams[font.sans-serif] [SimHei]
mpl.rcParams[axes.unicode_minus] Falsex [i for i in range(5)]
y [i for i in range(5)]
y1 [1 for i in range(5)]plt.bar(x, y, aligncenter, colorc, tick_label[a, b, c, d, e], labely)
plt.bar(x, y1, aligncenter, bottomy, colorg, tick_label[a, b, c, d, e], labely1)plt.xlabel(x)
plt.ylabel(y)
plt.legend()plt.show()3.2 堆积条形图
令函数bar中的参数lefty可输出堆积柱状图
import matplotlib as mpl
import matplotlib.pyplot as pltmpl.rcParams[font.sans-serif] [SimHei]
mpl.rcParams[axes.unicode_minus] Falsex [i for i in range(5)]
y [i for i in range(5)]
y1 [1 for i in range(5)]plt.barh(x, y, aligncenter, colorc, tick_label[a, b, c, d, e], labely)
plt.barh(x, y1, aligncenter, lefty, colorg, tick_label[a, b, c, d, e], labely1)plt.xlabel(x)
plt.ylabel(y)
plt.legend()plt.show()3.3 并列柱状图
并列柱状图的只是单个柱状图的叠加而已仅需注意叠加的柱状图的x的起始位置。
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as npmpl.rcParams[font.sans-serif] [SimHei]
mpl.rcParams[axes.unicode_minus] Falsex np.arange(5)
y [i for i in range(5)]
y1 [1 for i in range(5)]bar_width 0.35
tick_label [a, b, c, d, e]plt.bar(x, y, bar_width, aligncenter, colorc, labely, alpha0.5)
plt.bar(xbar_width, y1, bar_width, aligncenter, colorg, labely1, alpha0.5)plt.xlabel(x)
plt.ylabel(y)
plt.legend()plt.show()3.4 并列条形图
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as npmpl.rcParams[font.sans-serif] [SimHei]
mpl.rcParams[axes.unicode_minus] Falsex np.arange(5)
y [i for i in range(5)]
y1 [1 for i in range(5)]bar_width 0.35
tick_label [a, b, c, d, e]plt.barh(x, y, bar_width, aligncenter, colorc, labely, alpha0.5)
plt.barh(xbar_width, y1, bar_width, aligncenter, colorg, labely1, alpha0.5)plt.xlabel(x)
plt.ylabel(y)
plt.legend()plt.show()3.5 堆积折线图
堆积折线图是通过绘制不同数据集的折线图而产生的。堆积折线图是按照垂直方向上彼此堆叠且又不相互覆盖的排列顺序绘制若干条折线图而形成的组合图形。
import matplotlib.pyplot as plt
import numpy as npx np.arange(1, 5, 1)
y [i for i in range(4)]
y1 [1 for i in range(4)]
y2 [2, 3, 1, 4]labels [y, y1, y2]
colors [b, g, c, yellow]plt.stackplot(x, y, y1, y2, labelslabels, colorscolors)
plt.legend(locbest)plt.show()3.6 间断条形图
间断条形图是在条形图的基础上绘制而成的主要用来可视化定向数据的相同指标在时间维度上的指标值的变化情况实现定性数据的相同指标的变化情况的有效直观比较。import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as npmpl.rcParams[font.sans-serif][SimHei]
mpl.rcParams[axes.unicode_minus]Falseplt.broken_barh([(10, 15), (35, 20), (60, 5)], (12, 8), facecolorsyellow)
plt.broken_barh([(5, 10), (20, 2), (28, 6), (40, 3)], (2, 8), facecolors(r, b, g, c))plt.xlim(0, 70)
plt.ylim(0, 20)
plt.xlabel(播放时间)plt.xticks(np.arange(0, 70, 10))
plt.yticks([16, 6], [公益性广告, 食品类广告])
plt.grid(ls:, lw1, colorgray)
plt.title(不同广告的播放时长)plt.show()(10, 15)表示从起点是x轴的数值为10的位置起沿x轴正方向移动15个单位。 (12, 8)表示从起点是y轴的数值为10的位置起沿y轴正方向移动8个单位即柱体的高度和垂直起始位置。
3.7 阶梯图
阶梯图常用中时间序列数据的可视化任务中表示时序数据的波动周期和规律
import matplotlib.pyplot as plt
import numpy as npx np.linspace(1, 7, 7)
y np.sin(x)plt.step(x, y, colorr, wherepre, lw2)
plt.xlim(0, 8)
plt.xticks(np.arange(1,7,1))
plt.ylim(-1.1, 1.1)plt.show()where的取值pre”, 表示x轴上的每个数据点对应的y轴上的数值向左侧绘制水平线直x轴上的此数据点的左侧相邻数据点为止取值是按照左开右闭区间进行数据点选取的。除“pre”外也可取值post, 表示在x轴上的相邻数据点的取值是按照左闭右开区间进行数据点选取的。