python绘图matplotlib——使用记录1

news2024/11/15 17:53:17

本博文来自于网络收集,如有侵权请联系删除

使用matplotlib绘图

  • 1 常用函数汇总
    • 1.1 plot
    • 1.2 legend
    • 1.3 scatter
    • 1.4 xlim
    • 1.5 xlabel
    • 1.6 grid
    • 1.7 axhline
    • 1.7 axvspan
    • 1.8 annotate
    • 1.9 text
    • 1.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

reference:https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.plot.html
函数:plt.plot(x, y, c=‘r’, marker=‘o’, ls=‘-’, lw=1, ms=1, label=‘line1’)
参数:

  • x: x轴上的数值
  • y: y轴上的数值
  • marker:点的形状
  • c: color, 颜色
  • ls: Line Styles,如,‘-’,‘–’,‘-.’,‘:’
  • lw: linewidth,线条宽度
  • label: 标记图形内容的标签文本

注,plt.plot(x, y, ‘r^:’, lw=1, ms=5, label=‘line1’)
点的颜色、形状、线型通常写在一起,如
label需要与plt.legend配合使用,

1.2 legend

reference:https://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 np

x = np.linspace(0.05, 10, 1000)
y = np.sin(x)

plt.plot(x, y, marker='o', ls='-', c='r', lw=1, ms=1, label='line1')
# plt.plot(x, y, 'r^:', lw=1, ms=5, label='line1')
plt.legend(loc='best')
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 np

x = np.linspace(0.05, 10, 50)
y = np.sin(x)
y2 = np.cos(x)

plt.scatter(x, y, c='b', label='scatter1')
plt.scatter(x, y2, c='r', label='scatter1')
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=‘:’, color="r)
参数:

  • linestyle: 网格线的线条风格
  • color: 网格线的线条颜色

1.7 axhline

绘制平行与x轴的水平参考线
函数:plt.axhline(y=0, c=‘b’, ls=‘–’, lw=2)
参数:

  • y: 水平参考线的出发点
  • c: 参考线的线条颜色
  • ls: 参考线的线条风格
  • lw: 参考线的线条宽度
  • 平移性: plt.axvline(), 绘制平行与y轴的参考线

1.7 axvspan

绘制垂直于x轴的参考区域。
函数:plt.axvspan(xmin=1, xmax=2, facecolor=‘y’, alpha=0.3)
参数:

  • xmin: 参考区域的起始位置。
  • ymin: 参考区域的终止位置。
  • facecolor: 参看区域的填充颜色。
  • alpha: 参考区域的填充颜色的透明度。
  • 平移性: axhspan()
import numpy as np
from matplotlib import pyplot as plt

x = np.linspace(0.05, 10, 1000)
y = np.sin(x)

plt.plot(x, y, ls='-.', c="c", label="sin(x)")

plt.legend()

plt.axvspan(xmin=4.0, xmax=6.0, facecolor="y", alpha=0.3)
plt.axhspan(ymin=0.0, ymax=0.5, facecolor="y", alpha=0.3)

plt.show()

在这里插入图片描述

1.8 annotate

添加图形内容细节的指向型注释文本。
函数:plt.annotate(“maximum”, xy=(np.pi / 2, 1), xytext=((np.pi / 2) + 1, .8), weight=“bold”, color=‘b’, arrowprops=dict(arrowstyle=“->”, connectionstyle=“arc3”, color=“b”))
参数:

  • string: 图形内容的注释文本。
  • xy: 被注释图形内容的位置坐标。
  • xytext: 注释文本的位置坐标。
  • weight: 注释文本的字体粗细风格。
  • color: 注释文本的字体颜色。
  • arrowprops: 指示被注释内容的箭头的属性字典。
import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0.05, 10, 1000)
y = np.sin(x)

plt.plot(x, y, ls="-.", lw=2, c="g", label='sin(x)')
plt.legend()

plt.annotate("maximum", xy=(np.pi / 2, 1), xytext=((np.pi / 2) + 1, .8), weight="bold", color='black',
             arrowprops=dict(arrowstyle="->", connectionstyle="arc3", color="r"))

plt.show()

在这里插入图片描述

1.9 text

添加图形内容细节的无指向型注释文本
函数:plt.text(4, 0.1, “y=sin(x)”, weight=“bold”, color=“b”)
参数:

  • x: 注释文本内容所在位置的横坐标
  • y: 注释文本内容所在位置的纵坐标
  • string: 注释文本内容
  • weight: 注释文本内容的粗细风格
  • color: 注释文本内容的字体颜色
import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0.05, 10, 1000)
y = np.sin(x)

plt.plot(x, y, ls='-.', lw=2, c="c", label="sin(x)")

plt.legend()
plt.text(4, 0.1, "y=sin(x)", weight="bold", color="b")
plt.show()

在这里插入图片描述

1.10 title

添加图形内容的标题
函数:plt.title(string)
参数:

  • string: 图形内容的标题文本

2 常见图形绘制

2.1 bar——柱状图

函数:plt.bar(x, y, align=“center”, color=“c”, tick_label=x_label, hatch=“/”)
参数:

  • x: 柱状图中的柱体标签值。
  • y: 柱状图中的柱体高度。
  • align: 柱体对齐方式
  • color: 柱体颜色
  • tick_label: 刻度标签值
  • alpha: 柱体的透明度
  • hatch: 柱体的填充样式,如"/", “\”, “|”, "-"等,符号字符串的符号数量越多,柱体的几何图形的密集程度就越高。
import matplotlib as mpl
import matplotlib.pyplot as plt
from plotly.figure_factory import np

mpl.rcParams["font.sans-serif"] = ["SimHei"]
mpl.rcParams["axes.unicode_minus"] = False

x = [i for i in range(0, 10, 1)]
y = np.random.randint(1, 20, size=10)

x_label = [chr(i) for i in range(97, 97+10, 1)]
plt.bar(x, y, align="center", color="c", tick_label=x_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 np

mpl.rcParams["font.sans-serif"] = ["SimHei"]
mpl.rcParams["axes.unicode_minus"] = False

x = [i for i in range(0, 10, 1)]
y = np.random.randint(1, 20, size=10)

x_label = [chr(i) for i in range(97, 97+10, 1)]
plt.barh(x, y, align="center", color="c", tick_label=x_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 np

mpl.rcParams["font.sans-serif"] = ["SimHei"]
mpl.rcParams["axes.unicode_minus"] = False

x = np.random.randint(0, 10, 100)
y = range(0, 6, 1)

plt.hist(x, bins=y, color='c', histtype="bar", rwidth=1, alpha=0.6)

plt.xlabel("x")
plt.ylabel("y")
plt.show()

在这里插入图片描述
除最后一个柱体的数据范围是闭区间,其它柱体的数据范围都是左闭右开区间。
总结,柱状图与直方图的区别:
直方图描述的是连续型数据的分布,柱状图描述的是离散型数据分布;柱状图的柱体之间有空隙,直方图的柱体之间无空隙。

堆积直方图

import matplotlib as mpl
import matplotlib.pyplot as plt
from plotly.figure_factory import np

mpl.rcParams["font.sans-serif"] = ["SimHei"]
mpl.rcParams["axes.unicode_minus"] = False

x1 = np.random.randint(0, 10, 100)
x2 = np.random.randint(0, 10, 100)
y = range(0, 10, 1)

plt.hist([x1, x2], bins=y, color=['c', 'y'], histtype="bar", rwidth=1, stacked=True, alpha=0.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 np

mpl.rcParams["font.sans-serif"] = ["SimHei"]
mpl.rcParams["axes.unicode_minus"] = False

x1 = 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], bins=y, color=['c', 'y'], histtype="stepfilled", rwidth=1, stacked=True, label=labels)

plt.xlabel("x")
plt.ylabel("y")
plt.legend()
plt.show()

在这里插入图片描述

2.4 pie——饼图

绘制不同类型数据的百分比,通过饼图可以清楚地观察数据的占比情况。
函数:plt.pie(soldNums, explode=explode, labels=kinds, autopct=“%3.1f%%”, startangle=45, shadow=True, colors=colors)
参数:

  • 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"] = False

kinds = "a", "b", "c", "d"
soldNums = [0.3, 0.2, 0.4, 0.1]
colors = ['g', 'r', 'b', 'black']
plt.pie(soldNums, labels=kinds, autopct="%3.2f%%", startangle=60, colors=colors)

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"] = False

kinds = "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, explode=explode, labels=kinds, autopct="%3.1f%%", startangle=45, shadow=True, colors=colors)

plt.title("不同类型占比")
plt.show()

在这里插入图片描述

内嵌环饼形图

将饼图嵌套,可观察多组数据的比例分布

import matplotlib.pyplot as plt
import matplotlib as mpl
mpl.rcParams["font.sans-serif"] = ["SimHei"]
mpl.rcParams["axes.unicode_minus"] = False

kinds = ["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%%", radius=1, pctdistance=0.85, colors=outer_colors, textprops=dict(color="w"),
        wedgeprops=dict(width=0.3, edgecolor="w"))
wedges2, texts2, autotexts2 = plt.pie(weight2, autopct="%3.1f%%", radius=0.65, pctdistance=0.7, colors=inner_colors, textprops=dict(color="w"),
        wedgeprops=dict(width=0.3, edgecolor="w"))
plt.legend(wedges1, kinds, fontsize=12, title="比例", loc="best", bbox_to_anchor=(0.6, 0, 0.4, 1))
plt.setp(autotexts1, size=12, weight="bold")
plt.setp(autotexts2, size=12, weight="bold")
plt.setp(texts1, size=12)
plt.title("不同类型占比")
plt.show()

在这里插入图片描述

2.5 polar——极线图

在极坐标轴上绘制折线图
函数:plt.plot(theta, r)
参数:

  • theta: 每个标记所在射线与极径的夹角。
  • r: 每个标记到原点的距离。
import matplotlib.pyplot as plt
import numpy as np

barSlices = 12

theta = np.linspace(0, 2*np.pi, barSlices, endpoint=False)
r = 30*np.random.rand(barSlices)
plt.polar(theta, r, color="chartreuse", linewidth=2, marker="*", mfc="b", ms=10)
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 np

a = np.random.randn(50)
b = np.random.randn(50)

plt.scatter(a, b, s=np.power(10*a+20*b, 2), c=np.random.rand(50), cmap=mpl.cm.RdYlBu, marker="o")
plt.show()

在这里插入图片描述

2.7 stem——棉棒图

绘制离散有序数据
函数: plt.stem(x, y)
参数:

  • x: 指定棉棒的x轴基线上的位置
  • y: 绘制棉棒的长度
  • linefmt: 棉棒的样式
  • markerfmt : 棉棒末端的样式
  • basefmt: 指定基线的样式
import matplotlib.pyplot as plt
import numpy as np

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

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

在这里插入图片描述

2.8 boxplot——箱线图

箱线图是由一个箱体和一对箱须所组成的统计图形。箱体是由第一四分位数、中位数(第二四分位数)和第三分位数所组成的。在箱须的末端之外的数值可以理解为离群值。箱须是对一组数据范围的大致直观描述。

示例1

  • x: 绘制箱线图的输入数据
import matplotlib.pyplot as plt
import numpy as np

x = np.random.randn(100)

plt.boxplot(x)

plt.xticks([1], ["x"])
plt.ylabel("y")

plt.grid(axis="y", ls=":", lw=1, color="black", alpha=0.5)
plt.show()

在这里插入图片描述

示例2

函数:bplot = plt.boxplot(testList, whis=whis, widths=width, sym=“o”, labels=labels, patch_artist=True)
参数:

  • testList: 绘制箱线图的输入数据
  • whis: 四分位间距的倍数,用来确定箱须包含数据的范围大小
  • widths: 设置箱体的宽度
  • sym: 离群值的标记样式
  • labels: 每一个数据集的刻度标签
  • patch_artist: 是否给箱体添加颜色
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np

mpl.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.35

bplot = plt.boxplot(testList, whis=whis, widths=width, sym="o", labels=labels, patch_artist=True)
for patch, color in zip(bplot["boxes"], colors):
    patch.set_facecolor(color)

plt.ylabel("随机数值")
plt.grid(axis="y", ls=":", lw=1, color="gray", alpha=0.4)
plt.show()

在这里插入图片描述

2.9 errorbar——误差棒图

绘制y轴方向或是x轴方向的误差范围
函数:

  • x: 数据点的水平位置
  • y: 数据点的垂直位置
  • yerr: y轴方向的数据点的误差计算方法
  • xerr: x轴方向的数据点的误差计算方法
import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0.1, 1, 10)
y = np.exp(x)

plt.errorbar(x, y, fmt="bo:", yerr=0.2, xerr=0.05)

plt.xlim(0, 1.1)
plt.show()

在这里插入图片描述

3 常用统计图

3.1 堆积柱状图

令函数bar中的参数bottom=y可输出堆积柱状图

import matplotlib as mpl
import matplotlib.pyplot as plt

mpl.rcParams["font.sans-serif"] = ["SimHei"]
mpl.rcParams["axes.unicode_minus"] = False

x = [i for i in range(5)]
y = [i for i in range(5)]
y1 = [1 for i in range(5)]

plt.bar(x, y, align="center", color="c", tick_label=["a", "b", "c", "d", "e"], label='y')
plt.bar(x, y1, align="center", bottom=y, color="g", tick_label=["a", "b", "c", "d", "e"], label='y1')

plt.xlabel("x")
plt.ylabel("y")
plt.legend()

plt.show()

在这里插入图片描述

3.2 堆积条形图

令函数bar中的参数left=y可输出堆积柱状图

import matplotlib as mpl
import matplotlib.pyplot as plt

mpl.rcParams["font.sans-serif"] = ["SimHei"]
mpl.rcParams["axes.unicode_minus"] = False

x = [i for i in range(5)]
y = [i for i in range(5)]
y1 = [1 for i in range(5)]

plt.barh(x, y, align="center", color="c", tick_label=["a", "b", "c", "d", "e"], label='y')
plt.barh(x, y1, align="center", left=y, color="g", tick_label=["a", "b", "c", "d", "e"], label='y1')

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 np

mpl.rcParams["font.sans-serif"] = ["SimHei"]
mpl.rcParams["axes.unicode_minus"] = False

x = 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, align="center", color="c",  label='y', alpha=0.5)
plt.bar(x+bar_width, y1, bar_width, align="center", color="g", label='y1', alpha=0.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 np

mpl.rcParams["font.sans-serif"] = ["SimHei"]
mpl.rcParams["axes.unicode_minus"] = False

x = 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, align="center", color="c",  label='y', alpha=0.5)
plt.barh(x+bar_width, y1, bar_width, align="center", color="g", label='y1', alpha=0.5)

plt.xlabel("x")
plt.ylabel("y")
plt.legend()

plt.show()

在这里插入图片描述

3.5 堆积折线图

堆积折线图是通过绘制不同数据集的折线图而产生的。堆积折线图是按照垂直方向上彼此堆叠且又不相互覆盖的排列顺序,绘制若干条折线图而形成的组合图形。

import matplotlib.pyplot as plt
import numpy as np

x = 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, labels=labels, colors=colors)
plt.legend(loc="best")

plt.show()

在这里插入图片描述

3.6 间断条形图

间断条形图是在条形图的基础上绘制而成的,主要用来可视化定向数据的相同指标在时间维度上的指标值的变化情况,实现定性数据的相同指标的变化情况的有效直观比较。
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np

mpl.rcParams["font.sans-serif"]=["SimHei"]
mpl.rcParams["axes.unicode_minus"]=False

plt.broken_barh([(10, 15), (35, 20), (60, 5)], (12, 8), facecolors="yellow")
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=":", lw=1, color="gray")
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 np

x = np.linspace(1, 7, 7)
y = np.sin(x)

plt.step(x, y, color="r", where="pre", lw=2)
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轴上的相邻数据点的取值是按照左闭右开区间进行数据点选取的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1542633.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

浏览器工作原理与实践--渲染流程(上):HTML、CSS和JavaScript,是如何变成页面的

在上一篇文章中我们介绍了导航相关的流程,那导航被提交后又会怎么样呢?就进入了渲染阶段。这个阶段很重要,了解其相关流程能让你“看透”页面是如何工作的,有了这些知识,你可以解决一系列相关的问题,比如能…

服务端高并发分布式结构

前言 本文以⼀个 “电子商务” 应用为例,介绍从⼀百个到千万级并发情况下服务端的架构的演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有⼀个整体的认知,方便⼤家对后续知识做深⼊学习时有⼀定的整体视野…

二次开发Flink-coGroup算子支持迟到数据通过测输出流提取

目录 1.背景 2.coGroup算子源码分析 2.1完整的coGroup算子调用流程 2.2coGroup方法入口 2.3 CoGroupedStreams对象分析 2.4WithWindow内部类分析 2.5CoGroupWindowFunction函数分析 3.修改源码支持获取迟到数据测输出流 3.1复制CoGroupedStreams 3.2新增WithWindow.si…

YiYi-Web项目介绍

YiYi-Web项目介绍 1. 简介2. 使用2.1 后端开发环境2.2 前端开发环境 3. 测试环境:4. 更新日志5. 打包情况6.项目截图 本项目前端是html、css、js、jQuery基础技术。 后端都是最新的SpringBoot技术,不分离版本, 是最基础的项目开发教程&#x…

Spark Map 和 FlatMap 的比较

Spark Map 和 FlatMap 的比较 本节将介绍Spark中map(func)和flatMap(func)两个函数的区别和基本使用。 函数原型 map(func) 将原数据的每个元素传给函数func进行格式化,返回一个新的分布式数据集。 flatMap(func) 跟map(func)类似,但是每个输入项和…

Flink GateWay、HiveServer2 和 hive on spark

Flink SQL Gateway简介 从官网的资料可以知道Flink SQL Gateway是一个服务,这个服务支持多个客户端并发的从远程提交任务。Flink SQL Gateway使任务的提交、元数据的查询、在线数据分析变得更简单。 Flink SQL Gateway的架构如下图,它由插件化的Endpoi…

孩子看书用白光还是暖白光好呢?五大护眼台灯推荐,必选!

孩子看书时,选择合适的光线是至关重要的。白光与暖白光各有优劣,白光亮度高、色彩还原性好,适合需要高度集中注意力和精细操作的场合;而暖白光则更加柔和、不刺眼,有助于营造轻松的阅读氛围。为了帮助家长更好地为孩子…

coco creator 3.x: 居中展示

coco creator 3.x 里面有很多需要居中处理,下面积累记录一些日常的实验。 下面一张图如下,在这张图里面创建了一个3x3的展示。但是这个展示过程并不在居中展示。而它的容器节点 恰恰就在中心点位置。所以在创建后,布局预制体元素并不能实现居…

Docker容器初始

华子目录 docker简介虚拟化技术硬件级虚拟化硬件级虚拟化历史操作系统虚拟化历史基于服务的云计算模式 什么是dockerDocker和传统虚拟化方式的不同之处为什么要使用docker?Docker 在如下几个方面具有较大的优势 对比传统虚拟机总结docker应用场景docker改变了什么 基…

iOS开发 - 转源码 - __weak问题解决

iOS开发 - 转源码 - __weak问题解决 在使用clang转换OC为C代码时,可能会遇到以下问题 cannot create __weak reference in file using manual reference 原因 __weak弱引用是需要runtime支持的,如果我们还只是使用静态编译,是无法正常转换的…

MultiArch与Ubuntu/Debian 的交叉编译

返回:OpenCV系列文章目录(持续更新中......) 上一篇:基于ARM 的Linux系统的交叉编译 下一篇:MultiArch与Ubuntu/Debian 的交叉编译 警告: 本教程可能包含过时的信息。 什么是“MultiArch” OpenCV 可能…

家乡特色推荐系统设计与实现|SpringBoot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)

本项目包含可运行源码数据库LW,文末可获取本项目的所有资料。 推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java,…

flink join的分类

带窗口的join 下图是固定窗口,同样的还有滑动窗口和会话窗口join DataStream<Integer> orangeStream = ...; DataStream<Integer> greenStream = .

物联网应用技术中的stm32该怎么学,该从哪入手?

物联网应用技术中的stm32该怎么学&#xff0c;该从哪入手&#xff1f; STM32是只物联网中的一部分&#xff0c;单纯的学个STM32是没法满足物联网开发需求的&#xff0c;实际产品开发过程中会考虑成本等多种因素选择合适的方案&#xff0c;比如使用单片机还是stm32或是更高端的芯…

上位机图像处理和嵌入式模块部署(qmacvisual点线测量)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 上面一篇文章&#xff0c;我们完成了直线的拟合操作。在实际场景中&#xff0c;拟合之后更多地是需要进行长度的测量。既然是测量&#xff0c;那么…

Linux:传输层和UDP的传输原理

文章目录 端口号端口号理解端口号的划分 netstatUDP协议 之前结束了对于应用层的理解&#xff0c;那么从本篇开始往后&#xff0c;将会深入到传输层当中进行理解&#xff0c;尝试打通整个网络的协议栈 从对于之前的理解来说&#xff0c;在应用层涉及到的知识体系是相当庞大的&…

力扣450 删除二叉搜索树中的节点 Java版本

文章目录 题目描述思路代码 题目描述 给定一个二叉搜索树的根节点 root 和一个值 key&#xff0c;删除二叉搜索树中的 key 对应的节点&#xff0c;并保证二叉搜索树的性质不变。返回二叉搜索树&#xff08;有可能被更新&#xff09;的根节点的引用。 一般来说&#xff0c;删除…

力扣100热题[哈希]:最长连续序列

原题&#xff1a;128. 最长连续序列 题解&#xff1a; 官方题解&#xff1a;. - 力扣&#xff08;LeetCode&#xff09;题解&#xff0c;最长连续序列 &#xff1a;哈希表 官方解题思路是先去重&#xff0c;然后判断模板长度的数值是否存在&#xff0c;存在就刷新&#xff0c…

算法打卡day15

今日任务&#xff1a; 1&#xff09;110.平衡二叉树 2&#xff09;257. 二叉树的所有路径 3&#xff09;404.左叶子之和 110.平衡二叉树 题目链接&#xff1a;110. 平衡二叉树 - 力扣&#xff08;LeetCode&#xff09; 给定一个二叉树&#xff0c;判断它是否是高度平衡的二叉树…

爬楼梯C语言

方法一&#xff1a;动态规划 int climbStairs(int n) {int f[100] {0};f[0] 0;f[1] 1;f[2] 2;for(int i 3;i<n;i)f[i] f[i-1] f[i-2];//可能是从i-1阶爬上第i阶&#xff0c;也有可能是从i-2阶 return f[n]; } 方法二&#xff1a;滚动数组 int climbStairs(int n){int…