我有以下图表,其中包含变量X
和Y
值。为了解释这个问题,我在下面的代码中为X
和Y
设置了常量值。
我希望图形坐标从(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()
答案 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)
设置xlim
和ylim
:
plt.xlim((0,max(X)))
plt.ylim((0,max(X**2+A*X+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)