matplotlib plot显示marker超出边界部分

在用 matplotlib plot 用 marker 时,如果 marker 超出边界,会被截掉,如:
before
想让边界上的 marker 也显示完整,在 plot 时设置 clip_on=False,效果:
after

Code

import os
import numpy as np
import matplotlib
matplotlib.use("Agg")
matplotlib.rcParams['text.usetex'] = True
import matplotlib.pyplot as plt


DATASET = ["flickr", "nuswide"]
MODE = ["i2t", "t2i"]
LABEL = ["$I\\rightarrow T$", "$T\\rightarrow I$"]
MARKER = "os"
X = [3, 4, 5, 6, 7]
data = {
    "i2t": [0.6907, 0.7058, 0.7225, 0.73, 0.7373],
    "t2i": [0.6804, 0.7127, 0.7294, 0.7379, 0.7313],
}


font = {
    'family' : 'Times New Roman',
    'weight' : 'normal',
    'size'   : 18,
}


fig = plt.figure()
for _mode, _marker, _label in zip(MODE, MARKER, LABEL):
    plt.plot(X, data[_mode], marker=_marker, label=_label, clip_on=False)  # 此处设置


ax = plt.gca()
# ax.set_aspect(0.5 / ax.get_data_ratio(), adjustable='box')

for tick in ax.xaxis.get_major_ticks():
    tick.label.set_fontsize(20)
for tick in ax.yaxis.get_major_ticks():
    tick.label.set_fontsize(20)

plt.xlim((X[0], X[-1]))
# plt.ylim((0, 1.01))
plt.xticks(fontsize=16)
plt.yticks(fontsize=16)
# plt.xlabel("x, font)
plt.ylabel("y", font)
plt.grid()
plt.legend(fontsize=20, loc="best")
plt.tight_layout()

fig.savefig('after.png', pad_inches=0.0)
fig.savefig('after.pdf', pad_inches=0.0, backend='pgf')
plt.close(fig)

References

  1. matplotlib.artist.Artist.set_clip_on
  2. 如何在 Matplotlib 中绘制等轴的正方形图
  3. Matplotlib make tick labels font size smaller
`plot` 函数的参数非常多,下面列出其中一些比较常用的参数,具体使用可以参考官方文档: - `x`:x 轴数据,可以是一个列表、数组或者其他序列型的数据。 - `y`:y 轴数据,可以是一个列表、数组或者其他序列型的数据。 - `fmt`:字符串,用于指定绘图的颜色、标记和线型。如:'ro' 表示红色圆点,'g-' 表示绿色实线。 - `color`:用于指定线条颜色的字符串或者 RGB 值。 - `marker`:用于指定标记的类型。如:'o' 表示圆点,'s' 表示正方形。 - `markersize`:用于指定标记的大小。 - `linestyle`:用于指定线条的样式。如:'-' 表示实线,':' 表示虚线。 - `linewidth`:用于指定线条宽度。 - `label`:用于指定每条线的标签,用于图例显示。 - `alpha`:用于指定线条或标记的透明度。 - `zorder`:用于指定绘图顺序,数值越大越靠后绘制。 - `solid_capstyle`:用于指定实线的端点样式。 - `dash_capstyle`:用于指定虚线的端点样式。 - `dash_joinstyle`:用于指定虚线连接点的样式。 - `clip_on`:用于指定是否裁剪线条和标记,默认为 True。 - `clip_box`:用于指定裁剪区域的矩形。 - `fillstyle`:用于指定标记的填充样式。 - `markevery`:用于指定标记的间隔。 - `scalex`:用于指定是否缩放 x 轴。 - `scaley`:用于指定是否缩放 y 轴。 - `solid_joinstyle`:用于指定实线连接点的样式。 - `visible`:用于指定线条或标记是否可见。 - `drawstyle`:用于指定线条的绘制方式。 - `linestyle`:用于指定线条的样式。 - `markeredgecolor`:用于指定标记的边界颜色。 - `markerfacecolor`:用于指定标记的填充颜色。 - `markeredgewidth`:用于指定标记的边界宽度。 此外,还有一些与坐标轴、图例等相关的参数,这里不一一列举。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值