Python 使用matplotlib画图添加标注、及移动坐标轴位置

一、实现目标

代码实例

import matplotlib.pyplot as plt
import matplotlib
import numpy as np
#解决中文乱码问题,引入windows字体库
myfont = matplotlib.font_manager.FontProperties(fname=r'C:/Windows/Fonts/msyh.ttf')
x = np.linspace(-3,3,50)
y = 2*x + 1
plt.plot(x,y)
plt.figure(1,figsize=(8,5))
xticks = np.linspace(-3,3,11)
#plt.xticks(xticks)  设置坐标点
#yticks = np.linspace(-6,8,14)
#plt.yticks(yticks)
plt.xlabel("x")
plt.ylabel("y")
#挪动坐标位置
ax = plt.gca()
#去掉边框
ax.spines['top'].set_color('none')
ax.spines['right'].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))
'''
然后标注出点(x0, y0)的位置信息. 用plt.plot([x0, x0,], [0, y0,], 'k--', linewidth=1.0)
 画出一条垂直于x轴的虚线
'''
x0 = 1
y0 = 2*x0 + 1
plt.plot([x0,x0,],[0,y0],'k--',linewidth=2.5)
# set dot styles
plt.scatter([x0, ], [y0, ], s=50, color='r') #在这点加个蓝色的原点 原点大小50
plt.title(u'Annotation 标注',fontproperties=myfont)
#标注方式1: 使用 annotate 接下来我们就对(x0, y0)这个点进行标注.
'''
其中参数xycoords='data' 是说基于数据的值来选位置, xytext=(+30, -30) 和
textcoords='offset points' 对于标注位置的描述 和 xy 偏差值, arrowprops是对图中箭头类型的一些设置.
'''
plt.annotate(r'$2x+1=%s$' % y0, xy=(x0, y0), xycoords='data', xytext=(+30, -30),
             textcoords='offset points', fontsize=16,
             arrowprops=dict(arrowstyle='->', connectionstyle="arc3,rad=.2"))
'''
标注方式2: 使用 text
其中-3.7, 3,是选取text的位置, 空格需要用到转字符\ ,fontdict设置文本字体.
'''
plt.text(-3.7, 3, r'$.Annotation text 、 \mu\ \sigma_i\ \alpha_t$',
         fontdict={'size': 16, 'color': 'r'})

plt.show()


Matplotlib 中,可以通过设置坐标轴位置来将其放置在图形的右侧。具体步骤如下: 1. 导入 Matplotlib 库和 pyplot 模块: ``` python import matplotlib.pyplot as plt ``` 2. 绘制你需要的图形,如折线图、散图等。 3. 获取当前坐标轴对象,使用 `ax = plt.gca()` 或 `ax = plt.subplot()` 方法。 4. 使用 `ax.spines` 属性获取坐标轴对象的边框。 5. 对于需要移动坐标轴,将其 `set_position()` 方法的参数设置为一个元组 `(x, y)`, 其中 x 和 y 分别表示坐标轴位置。 6. 对于需要移动坐标轴标签,使用 `set_position()` 方法设置标签的位置。 下面是一个示例代码,将 y 轴的标签移动到图形的右侧: ``` python import matplotlib.pyplot as plt import numpy as np # 生成示例数据 x = np.linspace(0, 10, 100) y = np.sin(x) # 绘制折线图 plt.plot(x, y) # 获取当前坐标轴对象 ax = plt.gca() # 将 y 轴移动到图形的右侧 ax.spines['right'].set_position(('axes', 1.0)) # 将 y 轴标签移动到图形的右侧 ax.yaxis.set_label_position('right') ax.yaxis.tick_right() # 显示图形 plt.show() ``` 在这个示例中,我们生成了一个正弦曲线的示例数据,并使用 `plt.plot()` 方法绘制了折线图。然后,我们获取当前坐标轴对象 `ax`,并使用 `ax.spines['right'].set_position(('axes', 1.0))` 将 y 轴移动到图形的右侧。最后,使用 `ax.yaxis.set_label_position('right')` 和 `ax.yaxis.tick_right()` 将 y 轴标签和刻度移动到图形的右侧。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值