matplotlib 如何在Y轴上手动放置标签而不放置空间

nhn9ugyo  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(133)

我试图在一个图上绘制两个数据点的图,我已经完成了这个任务,我使用Python沿着Matplotlib来完成这个任务。但是当我想向ylabel添加文本时,问题来了,添加文本很简单,但我想在我的图旁边添加文本,而且也不使用空格。目前我使用空格,但当图缩小到不同大小时,这会产生问题,我希望有另一种更好的方法来做到这一点。我把我的问题分解成简单的场景,代码如下:

import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.gca()

# Sampling Frequency
SampleFreq = 500.0
time_axis = np.arange(0, 1.0, 1/SampleFreq)

sin_sig = np.sin(2 * np.pi * 10 * time_axis) + 2.0
cos_sig = np.cos(2 * np.pi * 10 * time_axis)

plt.plot(time_axis, sin_sig ,color='#000080', linewidth=1.0)
plt.plot(time_axis, cos_sig ,'r', linewidth=1.0)
plt.xlim(0, 1.0)
plt.yticks([])
plt.grid()
plt.xlabel('Time in ms', fontweight='bold')
plt.ylabel('Cos Signal                    \
                    Sine Signal',fontweight='bold')
plt.show()

字符串
正如你在图片中看到的,正弦和余弦信号写在ylabel上,但它们是通过使用空格来调整的。


的数据
我希望有人能帮助找到正确的解决方案。提前感谢

bprjcwpo

bprjcwpo1#

您可以创建两个子图,每条曲线对应一个子图,但使用不同的ylabel。

import numpy as np
import matplotlib.pyplot as plt

fig, (ax,ax2) = plt.subplots(nrows=2, sharex=True)
plt.subplots_adjust(hspace=0)

# Sampling Frequency
SampleFreq = 500.0
time_axis = np.arange(0, 1.0, 1/SampleFreq)

sin_sig = np.sin(2 * np.pi * 10 * time_axis)
cos_sig = np.cos(2 * np.pi * 10 * time_axis)

ax2.plot(time_axis, sin_sig ,color='#000080', linewidth=1.0)
ax.plot(time_axis, cos_sig ,'r', linewidth=1.0)
ax2.set_xlim(0, 1.0)
for a in [ax,ax2]:
    a.set_yticks([-1,1])
    a.set_yticklabels(["off", "on"])
    a.grid(True, axis='x',)

ax2.set_xlabel('Time in ms', fontweight='bold')
ax.set_ylabel("Sine Signal",fontweight='bold')
ax2.set_ylabel("Cos Signal",fontweight='bold')

ax.spines['bottom'].set_visible(False)
ax2.spines['top'].set_visible(False)

plt.show()

字符串


的数据

相关问题