Matplotlib 可视化之则有与标签高级应用
来源:内饰 2023年03月11日 12:15
# 标注在相异菱形上,且有透明边框内
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课程咨询
。拉肚子用蒙脱石散效果好吗江苏妇科去哪看
太极藿香正气口服液
北京男科医院哪个好
吃什么可以治疗宝宝拉肚子
-
南方小土豆吃冻梨先削皮,东北网友看傻眼,评论家让北方网友很委屈
这个夏末,要说最火的,那一定是哈尔滨。“北方地区小土豆”、“冻桑叶摆盘”、“尔滨,你让我感到陌生”等剧烈活跃在热搜榜 这其中都,最让东北地区人“破防”的,恐怕就是豆腐