matplotlib基础--2

news2024/11/27 18:30:02

5 图例

 

matplotlib中的图例是帮助观察者理解图像数据的重要工具。图列通常包含在图像中,用于解释不同的颜色、形状、标签和其它元素。

1)主要参数

当不设置图例的参数时,默认的图例是这样的。

x = np.linspace(0,1,50)
y1 = np.sin(x*2*np.pi)
y2 = np.cos(x*2*np.pi)

fig = plt.figure()
ax = fig.add_axes([0.1,0.1,0.8,0.8])
ax.plot(x,y1,label="sin")
ax.plot(x,y2,label="cos")
ax.legend()

 图例就是左下角的那部分。图例的主要参数,其实也就是上例ax.lengend()函数的主要参数:

  1. 图例位置相关:loc(位置字符串)
  2. 边框相关:facecolor(背景色),edgecolor(边框颜色),shadow(是否设置阴影),framemon(是否有边框和背景)
  3. 图例的列数:默认是1行多列的格式,ncol(列的个数)。

2)配置示例

通过示例来演示常用设置。

2.1 图例位置
x = np.linspace(0,1,50)
y1 = np.sin(x*2*np.pi)
y2 = np.cos(x*2*np.pi)

fig, ax = plt.subplots(3,3)
fig.set_size_inches(10,10)

locations = [
    ["lower left", "lower center", "lower right"],
    ["center left", "center", "center right"],
    ["upper left", "upper center", "upper right"]
]

for i in range(3):
    for j in range(3):
        ax[i,j].plot(x, y1, label="sin")
        ax[i,j].plot(x, y2, label="cos")
        ax[i][j].legend(loc=locations[i][j])

 上面的示例显示了不同位置的图列。

2.2 图例边框

边框可以设置边框的背景色,边框颜色和是否有阴影。

x = 2 * np.pi * np.linspace(0,1,50)
y1 = np.sin(x)
y2 = np.cos(x)

fig = plt.figure()
ax = fig.add_axes([0.1,0.1,0.8,0.8])
ax.plot(x, y1, label="sin",c="red")
ax.plot(x, y2, label="cos",c="black")
ax.legend(facecolor="yellow", edgecolor="green",shadow=True)

上例中,背景色yellow,边框green,阴影设置为True。

设置无边框比较简单,frameon=False即可。

x = 2 * np.pi * np.linspace(0,1,50)
y1 = np.sin(x)
y2 = np.cos(x)

fig = plt.figure()
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])
ax.plot(x, y1, label="sin")
ax.plot(x, y2, label="cos")
ax.legend(frameon=False)

2.3 图例分列

图例默认是一列多行的格式,比如上面的各个示例,图例都是一次竖着排列下来的。可以通过ncols属性,让图例横着排列。

x = 2 * np.pi * np.linspace(0,1,50)
y1 = np.sin(x)
y2 = np.cos(x)

fig = plt.figure()
ax = fig.add_axes([0.1,0.1,0.8, 0.8])
ax.plot(x, y1, label="sin")
ax.plot(x, y2, label="cos")
ax.legend(frameon=False, loc="upper center", ncol=2)

上面的示例,图例(legend)设置为两列,位与上方中间位置。

2.4 多个图例

 一般的图形只有一个图例,比如上面的都是这样的,sin和cos都在一个图例中。如果图例太多,或者多个图例之间关系不大,也可以创建多个图列。

from matplotlib.legend import Legend

x = 4 * np.pi * np.linspace(0,1,50)
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.sin(x+np.pi/4)
y4 = np.cos(x+np.pi/4)

fig = plt.figure()
ax = fig.add_axes([0.1,0.1,0.8,0.8])
legends = []
legends += ax.plot(x, y1, label="sin(x)")
legends += ax.plot(x, y2, label="cos(x)")
legends += ax.plot(x, y3, label="sin(x+$\pi/4)$")
legends += ax.plot(x, y4, label="cos(x+$\pi/4)$")

ax.legend(legends[:2],["sin(x)","cos(x)"], loc="upper right")
leg = Legend(ax, legends[2:], ["sin(x+$\pi/4)$","cos(x+$\pi/4$)"],loc="lower left")
ax.add_artist(leg)

上面的示例中4条曲线,分成了2个图例来说明。一个图列在右上角,一个图例在左下角。

2.5 图例中不同大小的点

最后,介绍一种更复杂的图例显示方式。首先生成几种主要编程语言的热度,生成图例的时候,给3个主要节点500,5000和10000设置点的大小比例与图中的各个散点数据保持一致。

x=["Python", "C/C++", "Java", "Go", "Shell", "Ruby", "Lua"]
y=np.array([10000, 25000, 20000,1500,3000,4000,1000])

fig = plt.figure(figsize=[8,6])
plt.scatter(x,y,c=np.log10(y), s=y/32)

for hot in [500,5000,10000]:
    plt.scatter([],[], c='b', s=hot/32, alpha=0.3, label=str(hot)+"(hot)")
    
plt.legend(scatterpoints=1, labelspacing=1.5,title="hot legend", frameon=False)

3) 总结

图例可以设置成各式各样,本篇介绍的图例设置方式并不是仅仅为了美观,更重要的是利用这些设置方式帮助用户能够达到以下目的:

  1. 帮助观察者快速了解图形数据:图例提供了关于图像数据的简洁,易于理解的解释,使得观察者能够快速了解图像的主题和内容。
  2. 帮助观察者更好地理解图像细节:在一些复杂地图像中,观察者可能需要花费很多时间才能理解其中的细节。图例可以提供关于图像细节的额外信息,使得观察者能够更好地理解图像。
  3. 帮助观察者发现图像中地异常或者重要信息:图例可以用于指出图像中地异常或者重要信息,帮助观察者更好的理解和分析图像。

6 文本标注

matplotlib文本和标注可以为数据和图形之间提供额外的信息,帮助观察者更好地理解数据和图形的含义。

文本用于图形中添加注释或者提供更详细的信息,以帮助观察者理解图形的含义。标注则是一种更加细粒度的文本信息,可以被用来为特定的数据点或区域提供更详细的信息。本节通过示例一次介绍文本和标注的常用使用方式。

1 文本

文本在图形中主要用在标题,坐标轴,图形中一些说明的地方。

1.1 颜色和字体
x = np.linspace(0, 10, 50)
y = np.power(x,2)

fig = plt.figure()
ax = fig.add_axes([0.1,0.1,0.8,0.8])

ax.set_title("Caption", fontdict={"fontsize":25, "color":"green"})
ax.set_xlabel("x axis", fontdict={"fontsize":20, "color":"blue"})
ax.set_ylabel("y axis", fontdict={"fontsize":20, "color":"yellow"})
ax.text(2,60,"f(x) = x * x", fontdict={"fontsize":15, "color":"black"})

ax.plot(x,y,label="f(x) = x * x")
ax.legend()

 需要掌握的部分就是fontdict这个参数,这个字典还有其它参数可以控制字体,这里只演示了两个常用的参数:

  1. fontsize:设置字体大小
  2. color:设置字体颜色

1.2 latex公式

上面的示例中,f(x) = x * x可以latex的方式来显示。

latex让能够显示各种复杂的数学公式,让文本看起来和数学书中一样。

x = np.linspace(0, 10, 50)
y = np.power(x,2)

fig = plt.figure()
ax = fig.add_axes([0.1,0.1,0.8,0.8])

ax.set_title("Caption", fontdict={"fontsize":25, "color":"green"})
ax.set_xlabel("x", fontdict={"fontsize":20, "color":"blue"})
ax.set_ylabel("$x^2$", fontdict={"fontsize":20, "color":"red"})
ax.text(2,60,"$f(x) = x^2$", fontdict={"fontsize":15, "color":"black"})

ax.plot(x,y,label="$f(x) = x^2$")
ax.legend()

 上面将Y轴的文本和图形中间的数学公式改成了latex格式。

2)标注

图形添加标注时,一般包含2个部分,一个指向数据的箭头,一段说明文字。

设置标志的核心参数是:

  1. xy:这是待标注的数据点的坐标。
  2. xytext:标注文本的坐标,一般是文本的左上角的点。
  3. bbox:文本框的样式字典
  4. arrowprops:箭头的样式字典

下面的示例中,通过设置上面4个参数来演示几种常用的标注:

x = np.linspace(1,10,10)
y = np.array([88,80,25,66,40,70,66,10,90,5])

fig = plt.figure()
ax = fig.add_axes([0.1,0.1,0.8,0.8])
ax.plot(x, y)

ax.annotate(
    "the first value",
    xy=(1,88),
    xytext=(0.3,70),
    arrowprops={"arrowstyle": "->", "connectionstyle": "arc3,rad=-0.5"},
)

ax.annotate(
    "point 1",
    xy=(3,25),
    xytext=(1.8,10),
    bbox={"boxstyle":"round","fc":"none","ec":"g"},
    arrowprops={"arrowstyle":"->"}
)

ax.annotate(
    "max",
    xy=(9,90),
    xytext=(6,85),
    bbox={"boxstyle":"round","alpha":0.1},
    arrowprops={"arrowstyle":"wedge,tail_width=0.8","alpha":0.1}
)

ax.annotate(
    "point 2",
    xy=(4,66),
    xytext=(3,85),
    bbox={"boxstyle":"round","fc":"lightblue","ec":"r"},
    arrowprops={"arrowstyle":"fancy"},
)

  1.  first value:设置箭头的弯曲度
  2. point 1:设置了边框
  3. point 2:设置了边框和背景色,同时设置了另一种箭头样式。
  4. max:设置了边框和另一种箭头的透明度。

3)总结

在使用matplotlib进行数据分析可视化时,合理使用文本和标注可以大大提供图形的可读性和易懂性,帮助观察者更好地理解数据和图形的含义。

7 绘图配置

matplotlib提供了大量配置参数,这些参数可以但不限于让我们从整体上调整通过matplotlib绘制的图形样式,这里的参数还有很多是功能性的,和其它工具结合时需要用的配置。

print(len(plt.rcParams))

结果:305.

本节仅介绍几个常用参数,目的是了解参数的使用方法和产生的效果。

1)坐标轴

首先是坐标轴相关的配置,通过下面的代码可以看看有多个关于坐标轴的配置:

import matplotlib.pyplot as plt

count = 0

for key,val in plt.rcParams.items():
    if key.startswith("axes"):
        print(key, " = ", val)
        count += 1
        
print(f"axes 相关设置有:{count} 个")
axes.autolimit_mode  =  data
axes.axisbelow  =  line
axes.edgecolor  =  black
axes.facecolor  =  white
axes.formatter.limits  =  [-5, 6]
axes.formatter.min_exponent  =  0
axes.formatter.offset_threshold  =  4
axes.formatter.use_locale  =  False
axes.formatter.use_mathtext  =  False
axes.formatter.useoffset  =  True
axes.grid  =  False
axes.grid.axis  =  both
axes.grid.which  =  major
axes.labelcolor  =  black
axes.labelpad  =  4.0
axes.labelsize  =  medium
axes.labelweight  =  normal
axes.linewidth  =  0.8
axes.prop_cycle  =  cycler('color', ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd', '#8c564b', '#e377c2', '#7f7f7f', '#bcbd22', '#17becf'])
axes.spines.bottom  =  True
axes.spines.left  =  True
axes.spines.right  =  True
axes.spines.top  =  True
axes.titlecolor  =  auto
axes.titlelocation  =  center
axes.titlepad  =  6.0
axes.titlesize  =  large
axes.titleweight  =  normal
axes.titley  =  None
axes.unicode_minus  =  True
axes.xmargin  =  0.05
axes.ymargin  =  0.05
axes3d.grid  =  True
axes 相关设置有:33 个

 一个有33个关于坐标轴的配置。

x = np.linspace(0,1,50) * 4 * np.pi
y1 = np.sin(x)
y2 = np.cos(x)

plt.rcParams.update(plt.rcParamsDefault)

fig = plt.figure()
ax = fig.add_axes([0.1,0.1,0.8,0.8])
ax.plot(x,y1, label="sin(x)")
ax.plot(x,y2, label="cos(x)")
ax.legend()

 

 修改了背景色,边框和网格:

x = np.linspace(0,1,50) * 4 * np.pi
y1 = np.sin(x)
y2 = np.cos(x)

plt.rcParams.update(plt.rcParamsOrig)
plt.rc("axes",facecolor="yellow",edgecolor="red",grid=True)

fig = plt.figure()
ax = fig.add_axes([0.1,0.1,0.8,0.8])
ax.plot(x,y1, label="sin(x)")
ax.plot(x,y2, label="cos(x)")
ax.legend()

 2) 网格

关于网格,除了通过坐标轴来设置,它还有自己的一些专用的设置选项:

count = 0
for key, val in plt.rcParams.items():
    if key.startswith("grid"):
        print(key, " = ", val)
        count += 1
        
print(f"grid 相关设置有:{count}个")

运行结果:

grid.alpha  =  1.0
grid.color  =  #b0b0b0
grid.linestyle  =  -
grid.linewidth  =  0.8
grid 相关设置有:4个

总共有4个相关的设置,设置看看效果。

代码和上面类似,如下:

x = np.linspace(0,1,50) * 4 * np.pi
y1 = np.sin(x)
y2 = np.cos(x)

plt.rcParams.update(plt.rcParamsOrig)
plt.rc("axes",grid=True)
plt.rc("grid", linestyle="-.",linewidth=1.5, color="blue")

fig = plt.figure()
ax = fig.add_axes([0.1,0.1,0.8,0.8])
ax.plot(x,y1, label="sin(x)")
ax.plot(x,y2, label="cos(x)")
ax.legend()

运行结果: 

 3) 刻度的相关参数:

xcount = 0
ycount = 0

for key, val in plt.rcParams.items():
    if key.startswith("xtick"):
        print(key, " = ", val)
        xcount += 1
    if key.startswith("ytick"):
        print(key, " = ", val)
        ycount += 1
        
print(f"xtick 相关设置有:{xcount}个")
print(f"ytick 相关设置有:{ycount}个")

运行结果:

xtick.alignment  =  center
xtick.bottom  =  True
xtick.color  =  black
xtick.direction  =  out
xtick.labelbottom  =  True
xtick.labelsize  =  medium
xtick.labeltop  =  False
xtick.major.bottom  =  True
xtick.major.pad  =  3.5
xtick.major.size  =  3.5
xtick.major.top  =  True
xtick.major.width  =  0.8
xtick.minor.bottom  =  True
xtick.minor.pad  =  3.4
xtick.minor.size  =  2.0
xtick.minor.top  =  True
xtick.minor.visible  =  False
xtick.minor.width  =  0.6
xtick.top  =  False
ytick.alignment  =  center_baseline
ytick.color  =  black
ytick.direction  =  out
ytick.labelleft  =  True
ytick.labelright  =  False
ytick.labelsize  =  medium
ytick.left  =  True
ytick.major.left  =  True
ytick.major.pad  =  3.5
ytick.major.right  =  True
ytick.major.size  =  3.5
ytick.major.width  =  0.8
ytick.minor.left  =  True
ytick.minor.pad  =  3.4
ytick.minor.right  =  True
ytick.minor.size  =  2.0
ytick.minor.visible  =  False
ytick.minor.width  =  0.6
ytick.right  =  False
xtick 相关设置有:19个
ytick 相关设置有:19个

X轴刻度和Y轴刻度的相关设置各有19个。

设置方法和效果如下:

x = np.linspace(0,1,50) * 4 * np.pi
y1 = np.sin(x)
y2 = np.cos(x)

plt.rcParams.update(plt.rcParamsDefault)
plt.rc("xtick", color="red", direction="in")
plt.rc("ytick", color="blue")

fig = plt.figure()
ax = fig.add_axes([0.1,0.1,0.8,0.8])
ax.plot(x,y1, label="sin(x)")
ax.plot(x,y2, label="cos(x)")
ax.legend()

运行结果:

上面的示例分布设置X轴和Y轴的眼色,以及X轴的direction, direction="in"表示刻度的小短线在图形的内部。Y轴没有设置这个属性,它的刻度线在图形外的。

4)颜色列表

绘制图形的时候,一个图形中有多条曲线时,每条曲线默认就会使用不同的颜色。这是因为配置有一个默认的颜色列表,绘制多个图形时,会依次使用其中的颜色。

print(plt.rcParams["axes.prop_cycle"])

运行结果:

cycler('color', ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd', '#8c564b', '#e377c2', '#7f7f7f', '#bcbd22', '#17becf'])

 修改这个默认的颜色列表,看看变化效果:

x = np.linspace(0,1,50) * 4 * np.pi
y1 = np.sin(x)
y2 = np.cos(x)

from matplotlib import cycler

colors= cycler(
    "color", ["#9467bd", "#8c564b", "#e377c2", "#7f7f7f", "#bcbd22", "#17becf"]
)

plt.rcParams.update(plt.rcParamsDefault)
plt.rc("axes", prop_cycle=colors)

fig = plt.figure()
ax = fig.add_axes([0.1,0.1,0.8,0.8])
ax.plot(x, y1, label="sin(x)")
ax.plot(x, y2, label="cos(x)")

ax.legend()

 改变颜色列表之后,两条曲线的颜色都变了。

绘制曲线或者其它图形时,其实是有参数可以指定颜色的,为什么还需要这个颜色列表的配置?这是因为,如果我们能够确定报告的风格,那么就可以在一开始就根据报告的风格设置好这个颜色列表。

然后绘制各种图形时就不需要指定颜色,极大简化后续的代码,也提供了代码的可维护性。

5) 总结

在配置rcParams时,可以根据需要修改各种选项,以达到更好的显示效果。

8 样式表

现在matplotlib已经内置了很多样式表,通过使用不同的样式表,可以整体改变绘制图形的风格,不用再调整一个个显示参数。

1)样式表的使用

1.1 所有内置样式表

首先查看内置的样式表:

import matplotlib.pyplot as plt
plt.style.available
['Solarize_Light2',
 '_classic_test_patch',
 'bmh',
 'classic',
 'dark_background',
 'fast',
 'fivethirtyeight',
 'ggplot',
 'grayscale',
 'seaborn',
 'seaborn-bright',
 'seaborn-colorblind',
 'seaborn-dark',
 'seaborn-dark-palette',
 'seaborn-darkgrid',
 'seaborn-deep',
 'seaborn-muted',
 'seaborn-notebook',
 'seaborn-paper',
 'seaborn-pastel',
 'seaborn-poster',
 'seaborn-talk',
 'seaborn-ticks',
 'seaborn-white',
 'seaborn-whitegrid',
 'tableau-colorblind10']
1.2 使用样式表的方式

使用样式表的方式有两种:一个是全局全局样式表设置,比如:

plt.style.use("ggplot")

随后的代码中,所有绘制的图形都是ggplot风格。

另一种局部样式表设置,比如:

with plt.style.context("classic"):
    # draw figure
    pass

这种方式,样式表只在with范围内效率。

2) 不同样式表的效率

下面演示几种风格差异比较大的样式表。首选,装载一个绘制图形的函数。

def draw():
    x = np.linspace(1,10,10)
    y = np.random.randint(10,100,10)
    
    fig = plt.figure(figsize=[6,4])
    fig.add_subplot(211)
    plt.plot(x,y)
    
    fig.add_subplot(212)
    plt.hist(y)
    
draw()

 2.1 classic风格
with plt.style.context("classic"):
    draw()

 2.2 solarize_Light2风格
with plt.style.context("Solarize_Light2"):
    draw()

2.3  bmh风格
with plt.style.context("bmh"):
    draw()

 2.4 dark_background风格
with plt.style.context("dark_background"):
    draw()

 2.5 fast风格
with plt.style.context("fast"):
    draw()

2.6  ggplot风格
with plt.style.context("ggplot"):
    draw()

2.7 seaborn风格 

matplotlib支持多种seaborn风格。这是使用默认的seaborn风格。

with plt.style.context("seaborn"):
    draw()

 3) 总结

内置的样式表方便易用,提供了许多预定义的样式,可以快速帮助我们创建美观的图表。使用内置的样式表还有个好处是可以保持图表的统一风格,使得图表具有更高的刻度性和可维护性。matplotlib提供的丰富样式表,可以满足不同类型的绘图需求,并且还可以通过自定义样式表来实现更加个性的绘图效果。

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

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

相关文章

【unity插件】使用BehaviorDesigner插件制作BOSS的AI行为树

文章目录 前言素材插件一、基础使用二、敌人物理攻击三、敌人面向玩家四、敌人法术攻击五、随机进行攻击六、敌人不同的阶段推荐学习视频源码完结 前言 Behavior Designer是一个行为树插件,是一款为了让策划,程序员,美术人员方便使用的可视化…

基于SSM技客户管理系统源码和论文

基于SSM技客户管理系统源码和论文079 开发工具:idea 数据库mysql5.7 数据库链接工具:navcat,小海豚等 技术:ssm 一、课题的背景和意义 1、课题目的 客户管理是每个企业中最重要的模块,对客户的分类管理有利于更有效地了解从…

RHCE——九、SELinux

SELinux 一、概念1、作用2、SELinux与传统的权限区别 二、SELinux工作原理1、名词解释主体(Subject)目标(Object)策略(Policy)安全上下文(Security Context) 2、文件安全上下文查看1…

java入门第三节

java入门第三节 一.什么是oop 1.pop与oop (1).面向过程编程:(POP:Procedure Oriented Programming) 1.步骤清晰简单,第一步做什么,第二步做什么,按照顺序; 2.代码线性&#xff0…

什么是 TEE

参考文献: Sabt M, Achemlal M, Bouabdallah A. Trusted execution environment: what it is, and what it is not[C]//2015 IEEE Trustcom/BigDataSE/Ispa. IEEE, 2015, 1: 57-64. “U.S. government protection profifile for separation kernels in environment…

svn软连接和文件忽略

软连接 1)TortoiseSVN->Properties->New->Externals->New 2)填入软连接信息 Local path: 写下软连接后的文件夹的名字 URL: 想要软连接的牡蛎->TortoiseSVN->Repo-browser 复制下填入 文件忽略 以空格隔开就行

CentOS 7 Nacos 设置开机自动重启

一、说明 Nacos如果是手动启动的话,在服务器宕机或者重启后,没有自动运行,影响很多业务系统,需要每次手动执行命令 startup.sh -m standalone,才能启动 Nacos 服务,不能像docker服务一样,使用 …

「Vue|网页开发|前端开发」01 快速入门:快速写一个Vue的HelloWorld项目

本文主要介绍如何用vue开发的标准化工具vue-cli快速搭建一个符合实际业务项目结构的hello world网页项目并理解vue的代码文件结构以及页面渲染流程。 文章目录 一、准备工作:安装node.js二、项目搭建创建项目目录全局安装vue-cli使用Webpack初始化项目启动项目学会…

Prometheus关于微服务的监控

在微服务架构下随着服务越来越多,定位问题也变得越来越复杂,因此监控服务的运行状态以及针对异常状态及时的发出告警也成为微服务治理不可或缺的一环。服务的监控主要有日志监控、调用链路监控、指标监控等几种类型方式,其中指标监控在整个微服务监控中比重最高,也是实际生…

支持库和应用条

每个Android新版本都会引入一些新特性,不过并不是每个人都能做到Android一推出新版本就升级到那个最新版本,实际上,大多数人都至少落后一个版本。而支持库允许在老版本的Android上使用新特性。 Andriod支持库提供了对Android老版本的向后兼容…

模块化与组件化:开发中的双剑合璧

引言:模块化与组件化的重要性 在现代软件开发中,随着项目规模的增长和技术的复杂性增加,如何有效地组织和管理代码变得越来越重要。模块化与组件化作为两种主要的代码组织方法,为开发者提供了有效的工具,帮助他们创建…

小白带你学习linux的LNMT和动静分离(三十九)

目录 一、LNMT 1、部署tomcat 2、部署nginx 3、部署Mariadb 4、配置Nginx 二、Nginx高级配置 1、location 2、rewirte 三、动静分离 1、修改nginx配置文件 2、重启服务!!! 一、LNMT L是linux,N是nginx ,M是…

8.28作业

定义一个基类 Animal&#xff0c;其中有一个虚函数 perform()&#xff0c;用于在子类中实现不同的表演行为。 #include <iostream>using namespace std; class Animal { public:Animal() {}virtual void perform(){} }; class Monkey:public Animal { public:Monkey() {…

普通制造型企业,如何成就“链主品牌

“链主品牌”通常掌握产业链主导地位&#xff0c;对于普通制造型企业看起来是遥不可及的事情&#xff0c;事实上并非如此。从洞察穿越周期的“链主品牌”规律来看&#xff0c;做螺丝起家的伍尔特、做宠物牵引绳的福莱希等小企业也可以成为“链主品牌”。另外&#xff0c;由于新…

如何用大模型解决产业场景实战问题?案例精讲教程来了!

科技爆炸&#xff0c;大模型赋能千行百业 生成式 AI 正以惊人的势头改变着我们的世界&#xff0c;新的浪潮席卷着全球各个行业&#xff0c;同时&#xff0c;也赋予企业前所未有的创新力量。大模型通过海量数据和复杂算法&#xff0c;刻画出AI世界的精妙法则&#xff0c;让企业…

【Android】TextView适配文本大小并保证中英文内容均在指定的UI 组件内部

问题 现在有一个需求&#xff0c;在中文环境下textView没有超过底层的组件限制&#xff0c;但是一切换到英文环境就超出了&#xff0c;这个如何解决呢&#xff1f;有啥例子吗&#xff1f; 就像这样子的。 解决 全部代码如下&#xff1a; <?xml version"1.0"…

解决无公网IP的微信公众号开发调试问题,利用内网穿透的实践经验分享

文章目录 前言1. 配置本地服务器2. 内网穿透2.1 下载安装cpolar内网穿透2.2 创建隧道 3. 测试公网访问4. 固定域名4.1 保留一个二级子域名4.2 配置二级子域名 5. 使用固定二级子域名进行微信开发 前言 在微信公众号开发中&#xff0c;微信要求开发者需要拥有自己的服务器资源来…

多线程(二)

一.关于线程的常用操作 1.启动线程 run(): 对于run方法的覆写只是指定线程要做的任务清单&#xff0c;而不是真正的启动线程 start()&#xff1a; start()方法才是真正的在底层创建出一个线程&#xff0c;并且启动 2.中断线程 1.通过共享的标记来中断 package demo; impor…

参加校招面试测试岗位一次次被刷,耗时一个多月经常偷偷在晚上哭

前言 前两天有粉丝联系我&#xff0c;说他软件工程专业&#xff0c;大厂校招屡次被刷&#xff0c;有一个已经到了三面&#xff0c;还是被刷了&#xff0c;感觉很绝望&#xff0c;不想找工作了。邮箱里也有很多信息&#xff0c;初试都没有过&#xff0c;找工作太难了&#xff0…

财务软件的必要性与优势:为什么企业需要投资财务管理工具?

财务管理是每家企业的核心&#xff0c;可以说财务管理如何关系到企业是否顺利运行。随着企业业务规模的扩大及其复杂性的增加&#xff0c;手工处理财务数据和流程变得越来越困难和难以控制。因此越来越多的企业选择配备一款好用的财务软件来帮助自己进行财务管理。 财务管理的作…