Skip to main content
 首页 » 编程设计

python之使用 Python 将 y=x/log(x) 的图添加到图形中

2025年05月04日24jackei

我正在尝试将曲线 x/log(x) 绘制到下图中:

plt.figure(1) 
plt.plot(x,x,"r") 
plt.title("Happy Numbers v y=x v y=x/log(x)") 
plt.ylabel("Number of Happy Numbers") 
plt.xlabel("Number Tested") 
plt.plot(x,y,'.') 
plt.show() 

我尝试添加以下代码行,但这会导致错误:

plt.plot(x,x/(m.log(x)) 

如果有人能提供帮助,我们将不胜感激!

请您参考如下方法:

只有为 x 使用正值才有意义,否则日志未定义,并确保 x 不等于 1,否则我们将遇到除法零场景。

import numpy as np 
import matplotlib.pyplot as plt 
x = np.linspace(1.1, 10, 100) 
y = x/np.log(x) 
plt.clf() 
# plt.figure(1) # I am not sure we need this? 
plt.plot(x,x,"r") 
plt.title("Happy Numbers v y=x v y=x/log(x)") 
plt.ylabel("Number of Happy Numbers") 
plt.xlabel("Number Tested") 
plt.plot(x,y,'.') 
# plt.show() # See previous comment. 

这会产生以下情节:

为什么您的代码可能会失败? 不清楚 m 是什么(math 模块?)。它可能被零错误除。我怀疑它可能是 x 的容器,因为按列表划分的标准列表可能不会给出预期的结果。我建议使用 numpy.array 容器,因为大多数操作都是基于元素的,这可能正是您正在寻找的。

更好的情节:

我觉得下面的比较好看。

import numpy as np 
import matplotlib 
matplotlib.use('TkAgg') 
from matplotlib import rc 
import matplotlib.pyplot as plt 
x = np.linspace(1.1, 10, 100) 
y = x / np.log(x) 
plt.clf()  # Ensures a clean plotting canvas. 
plt.rc('text', usetex=True) 
plt.rc('figure', figsize=(8, 6)) 
plt.rc('font', family='serif', serif=['Computer Modern Roman'], size=16) 
plt.plot(x, x, "k-", label='$x$') 
plt.title("Happy Numbers $v$") 
plt.ylabel("Number of Happy Numbers") 
plt.xlabel("Number Tested") 
plt.plot(x, y, 'k--', label='$x/\\log(x)$') 
plt.legend(loc='upper center', frameon=False, handlelength=3) 
plt.savefig('example.pdf', format="pdf")