当前位置:首页 >> 内饰

Matplotlib 可视化之则有与标签高级应用

来源:内饰   2023年03月11日 12:15

P2---------------------------------------

# 标注在相异菱形上,且有透明边框内

ax.text(

X[100], C[100],

" "+ plot1.get_label,

bbox=dict(facecolor="white", edgecolor="None", alpha=0.85),

color=plot1.get_color,

ha="center", va="center", size="small",

rotation=42.5,)

# ------------------------------P3---------------------------------------

# 用作圆点

ax.annotate(

"$cos(x)$",

(X[100], C[100]),

size="medium",

color=plot1.get_color,

xytext=(-50, +10),

textcoords="offset points",

arrowprops=dict(

arrowstyle="->", color=plot1.get_color,

connectionstyle="arc3,rad=-0.3"),)

# ------------------------------P4---------------------------------------

# 圈点和评注的组合

index = 10

ax.scatter(

[X[index]], [C[index]],

s=100, marker="o", zorder=10,

edgecolor=plot1.get_color,

facecolor="white", linewidth=1, clip_on=False,)

ax.text(

X[index], 1.01* C[index],

"A",

zorder=20,size="small",

color=plot1.get_color,

ha="center", va="center", clip_on=False,)

当然,这里是没有人最好的选择,因为它真的取决于统计数据。对于上述的sin / cos的示例(非常简单),这四种技术细节都是恰当的,但当有很多确实统计数据一齐用作时,或许这种步骤就失效了。此时我们或许只能促成其他步骤来标记统计数据,如将上图分成几个上图分别展示。

书名和表单

我们从未用作 set_title 、 set_xlabel 和 set_ylabel 步骤操作者了书名和表单。当某种程度用作匹配表达式时,无论如何较为不便。并且它们的匹配前面通常对大多数上范例都较为恰当。 尽管如此,仍然可以用作各种表达式来自带和整体规划纹理。

如下面两个上图简述,对比掩蔽,可以明显发现:上上图基本上用作了匹配表达式。而下上图中都,用直线表单去除直线物镜表单,即在直线下方受制于说明表单,为了使其更是靠近直线,删除了或许与表单碰撞的中都心物镜。此外,将书名其向前快速移动,并相应地快速移动示意上图框内,将其放于在书名下方,并且用作一行两列的依序步骤。似乎这里没有人做过适合于的操作者,但我确信结果在影像上更是精彩。

零碎标识符验证ax.legend(

edgecolor= "None",

ncol= 2,

loc= "upper right",

bbox_to_anchor=( 1.01, 1.225),

# 用以与loc一齐定位示意上图的框内。(x, y, width, height)

borderaxespad= 1,

# 直线线和示意上图边框内之间的填充,以字体一般来说为基本单位。

)

# 设书名

ax.set_title( "余弦", x= 1, y= 1.2, ha= "right",size= 14)

# 设x直线表单

ax.set_xlabel( "角度", va= "center", weight= "bold",size= 12)

ax.xaxis.set_label_coords( 0.5, -0.25)

# 设表单的经纬度。

# 匹配只能,y 表单的 x 经纬度和 x 表单的 y 经纬度由物镜表单边境地区框内确定,

# 但是如果有多个直线,这或许则会导致多个表单偏移所致。

# 设y直线表单

ax.set_ylabel( "倍数", ha= "center", weight= "bold",size= 12)

ax.yaxis.set_label_coords( -0.025, 0.5)

在某些只能(如内阁则会议海报),或许只能让书名更是吸引眼球,如下上图简述。这可以通过用作 make_axes_locatable 步骤来分割每个直线,并为书名区外中线15%的快速移动性。在这个上图中都,能用Latex 填入了一个完全偏移的自然语言,它可以被视为是另一种基本本质或(低阶)花纹。

零碎标识符参闻 latex-text-box[1]

评注

在matplotlib中都,评注或许是最难处理的并不一定。原因是它倍数得注意的本质都有,而这些本质又很强大量的表达式。此外,由于评注所限于的自然语言一般来说是按点依序的,这无疑又是严峻。此外 或许只能分离用作图层、点、分数或统计数据单元中都的绝对经纬度或相比经纬度。你可以这么确信,你可以对很强任何类型图像的任何直线透过评注,那么你那时候不该可以阐释到为什么annotate步骤共享这么多表达式。

下面这段话较为抽象,接下来我们一齐看下具体情况举例来说。 评注纹理最简单的步骤是在一切都是评注的点附近加到表单,如下上图简述。上图中都,为了使得表单单独于统计数据分布始终保持通用性,为表单加到了一个白色的轮廓。然而,如果这样的点太少,所有不同的表单或许则会使纹理来得纷乱,并或许则会掩盖潜在的最主要文档。

零碎标识符验证

上下向上查阅更是多软件包

importmatplotlib.patheffects aspath_effects

fig = plt.figure(figsize=(10, 5))

ax = plt.subplot(1, 2, 1, xlim=[-1, +1],

xticks=[], ylim=[-1, +1],

yticks=[], aspect=1)

# -------------------------------------------------------------------

# 插图散点上图

np.random.seed(123)

X = np.random.normal(0, 0.35, 1000)

Y = np.random.normal(0, 0.35, 1000)

ax.scatter(X, Y, edgecolor="None", s=60,

facecolor="C1", alpha=0.5)

# 不重复采行:array([1, 4, 0, 3, 2])

I = np.random.choice(len(X), size=5,

replace=False)

# 根据y倍数,从大到小顺序排列

Px, Py = X[I], Y[I]

I = np.argsort(Y[I])[::-1]

Px, Py = Px[I], Py[I]

# 将随机选取的五个点用粉红色边框内框内挑选

ax.scatter(Px, Py, edgecolor="black", facecolor="white", zorder=20)

ax.scatter(Px, Py, edgecolor="None", facecolor="C1", alpha=0.5, zorder=30)

加到表单评注fori inrange(len(I)):

# 五个评注是外观是一样的,可以用作循环加到

text = ax.annotate(

"Point "+ chr(ord( "A") + i),

xy=(Px[i], Py[i]),

xycoords= "data",

xytext=( 0, 18),

textcoords= "offset points",

ha= "center",

size= "medium",

arrowprops=dict(

arrowstyle= "->", shrinkA= 0, shrinkB= 5, color= "black", linewidth= 0.75),

)

text.set_path_effects(

[path_effects.Stroke(linewidth= 2, foreground= "white"), path_effects.Normal]

)

text.arrow_patch.set_path_effects(

[path_effects.Stroke(linewidth= 2, foreground= "white"), path_effects.Normal]

)

另一种步骤是将表单推到上图的一侧,并用作虚线来建终点和表单之间的链接,如下上图简述。

但这些椭圆形、前面、依序步骤等外观的设计并不是纹理系统则会的,为了插图出该纹理,就必须数倍数几乎所有的进去。

首先,为了不愿线相互交叠,将前提标记的点顺序排列:

X = np.random.normal( 0, .35, 1000)

Y = np.random.normal( 0, .35, 1000)

ax.scatter(X, Y, edgecolor= "None",

facecolor= "C1", alpha= 0.5)

I = np.random.choice(len(X), size= 5, replace= False)

Px, Py = X[I], Y[I]

I = np.argsort(Y[I])[:: -1]

Px, Py = Px[I], Py[I]

从这些点开始,用作一个相当适合于的连结外观来评注它们:

上下向上查阅更是多软件包

y, dy = 0.25, 0.125

style = "arc,angleA=-0,angleB=0,armA=-100,armB=0,rad=0"

fori inrange(len(I)):

text = ax2.annotate(

"Point "+ chr(ord( "A") + i),

xy=(Px[i], Py[i]),

xycoords= "data",

xytext=( 1.25, y - i * dy),

textcoords= "data",

arrowprops=dict(

arrowstyle= "->",

color= "black",

linewidth= 0.75,

shrinkA= 20,

shrinkB= 5,

patchA= None,

patchB= None,

connectionstyle=style,

),

)

text.arrow_patch.set_path_effects(

[path_effects.Stroke(linewidth= 2, foreground= "white"), path_effects.Normal]

)

也可以用作连结补片的步骤在直线外来评注的前提并不一定,如下上图简述。

该上图中都,创始人了几个方形,在一些点远处推断不感兴趣的区外,并创始人了与相应的放大直线的连结。警惕连结开始在窗子的方形,这是一个极好的功用共享的评注:可以选定并不一定的性质要评注(通过共享一个patche)和matplotlib则会照顾的连结边境地区的是从的patche。

零碎标识符验证

上下向上查阅更是多软件包

frommatplotlib.gridspec importGridSpec

frommatplotlib.patches importRectangle, ConnectionPatch

# 设油画

fig = plt.figure(figsize=(6, 5))

n = 5

gs = GridSpec(n, n + 1)

ax = plt.subplot( gs[:n, :n],

xlim=[-1, +1], xticks=[],

ylim=[-1, +1], yticks=[], aspect=1)

# 插图散点上图稍(闻下面标识符)

dx, dy = 0.075, 0.075

fori, (x, y) inenumerate(zip(Px, Py)):

# 设子油画

sax = plt.subplot(

gs[i, n],

xlim=[x - dx, x + dx],

xticks=[],

ylim=[y - dy, y + dy],

yticks=[],

aspect=1,)

# 在子油画上插图散点

sax.scatter(X, Y, edgecolor="None",

facecolor="C1", alpha=0.5,s=60)

sax.scatter(Px, Py, edgecolor="black",

facecolor="None", linewidth=0.75,s=60)

# 受制于评注

sax.text(

1.1, 0.5,

"Point "+ chr(ord("A") + i),

rotation=90, size=8, ha="left", va="center",

transform=sax.transAxes, )

# 插图方形

rect = Rectangle(

(x - dx, y - dy),

2* dx, 2* dy,

edgecolor="black", facecolor="None",

linestyle="---", linewidth=0.75, )

ax.add_patch(rect)

# 插图连结安装程序Patch

con = ConnectionPatch(

xyA=(x, y), coordsA=ax.transData,

xyB=(0, 0.5), coordsB=sax.transAxes,

linestyle="---", linewidth=0.75,

patchA=rect, arrowstyle="->", )

fig.add_artist(con)

GridSpec :选定子上图将放于的三维的微分前面。只能设三维的行数和列数。子上图布局表达式(例如,左,右等)可以抑制调整。

ConnectionPatch :用以在两点之间建起连结线。

上下向上查阅更是多表达式

表达式:

xyA:它是x-y上图上也称做点A的连结线的终点。

xyB:它是x-y上图上连结线的终点,也称做点B。

coordsA:A点的经纬度。

coordsB:B点的经纬度。

axesA:它是x-y上图上连结直线的终点。

axesB:它是x-y上图上连结直线的终点。

arrowstyle:用以设连结圆点的外观。其匹配类型为“-”。

arrow_transmuter:用以看来连结线。

connectionstyle:它描述了posA和posB的连结步骤。它可以是ConnectionStyle类的模板,也可以是connectionstyle名称的字符串,它很强可选的逗号分隔并不一定。

connector:通常看来它,并决定看来哪个连结器。

patchA:用以在A点加到安装程序。

patchB:用以在B点加到安装程序

shrinkA:用以在A点外周连结器。

shrinkB:用以在B点外周连结器。

mutation_scale:圆点外观的并不一定(例如head_length)的放大比例倍数。

mutation_aspect:人体内前,方形的快速移动性将被该倍数挤压,人体内框内将被其倒数拉伸。

clip_on:设摄影家是否用作补拍。

dpi_cor:dpi_cor当前用以linewidth-related事物和外周位点。突变规模受此不良影响。

简介

[1]

latex-text-box:

[2]

Scientific Visualisation-Python & Matplotlib

点这里👇关注我,回一切都是标星哦~

CDA课程咨询

拉肚子用蒙脱石散效果好吗
江苏妇科去哪看
太极藿香正气口服液
北京男科医院哪个好
吃什么可以治疗宝宝拉肚子
友情链接