matplotlib 设置标注方向_【Matplotlib】 标注细节注意

本文介绍了如何使用matplotlib调整图表的刻度标注,使其在有复杂线条的数据上更清晰可见。通过修改标注字体大小和添加半透明白色背景,既能突出数据又能保留刻度信息。示例代码展示了如何设置X轴和Y轴的刻度标签,并提供了具体的注解和箭头效果,以增强图表的可读性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

相关文档:

由于蓝线和红线的存在,现在刻度标注很难看清楚。我们可以使他们更大,也可以使它们的属性以便使得线呈现半透明的白色背景。这样做我们既可以看到数据也可以看到刻度标注了。

相关的设置代码:

...

for label in ax.get_xticklabels() + ax.get_yticklabels():

label.set_fontsize(16)

label.set_bbox(dict(facecolor='white', edgecolor='None', alpha=0.65))

...

设置前图像:

设置后图像:

完整的代码如下:

import numpy as np

import matplotlib.pyplot as plt

plt.figure(figsize=(8, 5), dpi=80)

plt.subplot(111)

X = np.linspace(-np.pi, np.pi, 256, endpoint=True)

C, S = np.cos(X), np.sin(X)

plt.plot(X, C, color="blue", linewidth=2.5, linestyle="-", label="cosine")

plt.plot(X, S, color="red", linewidth=2.5, linestyle="-", label="sine")

ax = plt.gca()

ax.spines['right'].set_color('none')

ax.spines['top'].set_color('none')

ax.xaxis.set_ticks_position('bottom')

ax.spines['bottom'].set_position(('data', 0))

ax.yaxis.set_ticks_position('left')

ax.spines['left'].set_position(('data', 0))

plt.xlim(X.min() * 1.1, X.max() * 1.1)

plt.xticks([-np.pi, -np.pi / 2, 0, np.pi / 2, np.pi],

[r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$'])

plt.ylim(C.min() * 1.1, C.max() * 1.1)

plt.yticks([-1, 1],

[r'$-1$', r'$+1$'])

plt.legend(loc='upper left')

t = 2*np.pi/3

plt.plot([t, t], [0, np.cos(t)],

color='blue', linewidth=1.5, linestyle="--")

plt.scatter([t, ], [np.cos(t), ], 50, color='blue')

plt.annotate(r'$sin(\frac{2\pi}{3})=\frac{\sqrt{3}}{2}$',

xy=(t, np.sin(t)), xycoords='data',

xytext=(10, 30), textcoords='offset points', fontsize=16,

arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))

plt.plot([t, t], [0, np.sin(t)],

color='red', linewidth=1.5, linestyle="--")

plt.scatter([t, ], [np.sin(t), ], 50, color ='red')

plt.annotate(r'$cos(\frac{2\pi}{3})=-\frac{1}{2}$', xy=(t, np.cos(t)),

xycoords='data', xytext=(-90, -50),

textcoords='offset points', fontsize=16,

arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))

for label in ax.get_xticklabels() + ax.get_yticklabels():

label.set_fontsize(16)

label.set_bbox(dict(facecolor='white', edgecolor='None', alpha=0.65 ))

plt.show()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值