matplotlib 图形绘制

matplotlib graph plotting

我希望绘制一个二维散点图,其 x 和 y 坐标的值分别在 [-0.5, 0.5] 和 [-0.5,0.5] 范围内

fig1 = plt.figure(figsize=[7,7])
axes1 = fig1.add_axes([1,1,1,1])
axes1.set_xlabel("xlabel")
axes1.set_ylabel("ylabel")
axes1.set_title("Emotions Quadrants")
axes1.spines['left'].set_position(('axes', 0.5))
axes1.spines['bottom'].set_position(('axes', 0.5))
axes1.scatter(x_vals, y_vals, label="test")

以上代码根据数据缩放和 x 和 y 坐标。我希望为两个轴显示从 -0.5 到 0.5 的 x 和 y 坐标,然后绘制散点图

I wish to keep the axes intersecting at 0,0 and not scale according to the data points


编辑 通过将 x 和 y 值作为 xvals = [0.237, 0.415, -0.264, 0.142, -0.037, -0.088, -0.143, -0.332, 0.166, -0.079] y 值 = [0.265, 0.325, -0.069, 0.086, -0.136, 0.124, -0.051, -0.052, 0.280, 0.121]

我正在关注 @r-beginners 的回答 [在此处输入图片描述][2]

我希望原点在中心,点不缩放也不向下移动 [2]: https://i.stack.imgur.com/lxGIs.png

如果您将轴设置为所需范围,将框架设置为中心,您将得到您想要的图表。

import matplotlib.pyplot as plt
import numpy as np

#x_vals = np.linspace(-0.5,0.5,10)
#y_vals = np.linspace(-0.5,0.5,10)

x_vals = [0.237, 0.415, -0.264, 0.142, -0.037, -0.088, -0.143, -0.332, 0.166, -0.079]
y_vals= [0.265, 0.325, -0.069, 0.086, -0.136, 0.124, -0.051, -0.052, 0.280, 0.121]

x_vals_center = (np.max(x_vals) + np.min(x_vals)) / 2
y_vals_center = (np.max(y_vals) + np.min(y_vals)) / 2

fig1 = plt.figure(figsize=[7,7])
axes1 = fig1.add_axes([-0.5,-0.5,0.5,0.5])
axes1.set_xlabel("xlabel", labelpad=0)
axes1.set_ylabel("ylabel", labelpad=110)
axes1.set_title("Emotions Quadrants")
axes1.spines[['top', 'right']].set_visible(False)
#axes1.spines[['left','bottom']].set_position(('data', 0))

axes1.spines['left'].set_position(('data', x_vals_center))
axes1.spines['bottom'].set_position(('data', y_vals_center))

axes1.xaxis.set_ticks_position('bottom')
axes1.yaxis.set_ticks_position('left')

axes1.scatter(x_vals, y_vals, label="test")

plt.show()

IIUC,

x_vals = [0.237, 0.415, -0.264, 0.142, -0.037, -0.088, -0.143, -0.332, 0.166, -0.079] 
y_vals= [0.265, 0.325, -0.069, 0.086, -0.136, 0.124, -0.051, -0.052, 0.280, 0.121] 

fig1 = plt.figure(figsize=[7,7])
axes1 = fig1.add_axes([-0.5,-0.5,0.5,0.5])
axes1.set_xlabel("xlabel", labelpad=110)
axes1.set_ylabel("ylabel", labelpad=110)
axes1.set_title("Emotions Quadrants")
axes1.spines['right'].set_visible(False)
axes1.spines['top'].set_visible(False)

axes1.spines['left'].set_position(('axes', 0.5))
axes1.spines['bottom'].set_position(('axes', 0.5))

axes1.xaxis.set_ticks_position('bottom')
axes1.yaxis.set_ticks_position('left')

axes1.scatter(x_vals, y_vals, label="test")
axes1.set_ylabel('Arousal')
axes1.set_xlabel('Valence')

axes1.set_ylim(-.5,.5)
axes1.set_xlim(-.5,.5)

plt.show()

输出: