在Matplotlib

时间:2018-06-01 18:49:42

标签: python python-3.x matplotlib

我有以下图表,其中包含变量XY值。为了解释这个问题,我在下面的代码中为XY设置了常量值。

我希望图形坐标从(0,0)开始,以及如何将文本值(a,b,Sxy,r,R^2)置于彼此之下而不是彼此相邻,如下所示。

请注意,我无法使用X,Y的特定值,因为它们是可变的。这就是为什么我必须使用min()max()函数作为坐标来显示左上角的文本值。

代码:

import numpy as np
from matplotlib.pyplot import *
X = np.arange(0,10,0.1)
A = 2
plot(X,X**2+A*X+2,'b-')
text(min(X), max(X**2+A*X+2),r'a=12, b=2.09 $S_{xy}$= 0.71 r= 0.9 $R^2$= 0.85',fontsize=12,fontweight='bold')
xlabel('X_value')
ylabel('Y_value')

grid(True)
show()

enter image description here

2 个答案:

答案 0 :(得分:1)

对于文本,只需删除原始字符并将垂直对齐设置为顶部。 对于限制,最好只更改最小值而不是范围。

import numpy as np
import matplotlib.pyplot as plt
X = np.arange(0,10,0.1)
A = 2
plt.plot(X,X**2+A*X+2,'b-')
plt.text(min(X), max(X**2+A*X+2),'a=12,\nb=2.09\n $S_{xy}$= 0.71\n r= 0.9\n $R^2$= 0.85',fontsize=12,fontweight='bold',va='top')
plt.xlim(xmin=0)
plt.ylim(ymin=0)
plt.xlabel('X_value')
plt.ylabel('Y_value')

答案 1 :(得分:0)

问题1:

设置xlimylim

plt.xlim((0,max(X)))
plt.ylim((0,max(X**2+A*X+2)))

问题2:

使用\n换行,并使用verticalalignment='top'

plt.text(min(X), max(X**2+A*X+2),'a=12\nb=2.09\n$S_{xy}$= 0.71\nr= 0.9\n$R^2$= 0.85',fontsize=12,fontweight='bold', verticalalignment='top')

代码:

import matplotlib.pyplot as plt
X = np.arange(0,10,0.1)
A = 2
plt.plot(X,X**2+A*X+2,'b-')
plt.text(min(X), max(X**2+A*X+2),'a=12\nb=2.09\n$S_{xy}$= 0.71\nr= 0.9\n$R^2$= 0.85',fontsize=12,fontweight='bold', verticalalignment='top')
plt.xlabel('X_value')
plt.ylabel('Y_value')
plt.xlim((0,max(X)))
plt.ylim((0,max(X**2+A*X+2)))


plt.grid(True)

enter image description here