我正在尝试制作一个图形:
import matplotlib.pyplot as plt
from numpy import *
from scipy.interpolate import *
x= array([13, 15,18,20,25,30])
y= array([2.29E+60, 3.87E+60, 7.12E+60, 1.07E+61, 1.90E+61, 3.34E+61])
y2= 7.0867E+56 * x**3.177
plt.xlabel('M/Msun')
plt.ylabel('Average Rate of Nucleosynthesis')
plt.xscale('log')
plt.yscale('log')
plt.yticks((min(y),max(y), 1))
plt.plot(x,y, 'o', color='black')
plt.plot((x),y2,'black')
plt.show()
然后我得到这种图形:
y轴上的刻度线不显示。关于如何解决此问题的任何想法?
答案 0 :(得分:0)
您可以执行以下操作:
import matplotlib.pyplot as plt
from numpy import *
from scipy.interpolate import *
x= array([13, 15,18,20,25,30])
y= array([2.29E+60, 3.87E+60, 7.12E+60, 1.07E+61, 1.90E+61, 3.34E+61])
y2= 7.0867E+56 * x**3.177
fig, ax = plt.subplots()
plt.xlabel('M/Msun')
plt.ylabel('Average Rate of Nucleosynthesis')
ax.plot(x,y, 'o', color='black')
ax.plot((x),y2,'black')
ax.set_xscale('log')
ax.set_yscale('log')
ax.set_yticks([1.00E+60, 1.00E+61, 1.00E+62])
plt.show()
或
import matplotlib
import matplotlib.pyplot as plt
from numpy import *
from scipy.interpolate import *
x= array([13, 15,18,20,25,30])
y= array([2.29E+60, 3.87E+60, 7.12E+60, 1.07E+61, 1.90E+61, 3.34E+61])
y2= 7.0867E+56 * x**3.177
fig, ax = plt.subplots()
plt.xlabel('M/Msun')
plt.ylabel('Average Rate of Nucleosynthesis')
ax.plot(x,y, 'o', color='black')
ax.plot((x),y2,'black')
ax.set_xscale('log')
ax.set_yscale('log')
ax.set_yticks([1.00E+60, 5.00E+60, 1.00E+61, 5.00E+61])
ax.get_yaxis().set_major_formatter(matplotlib.ticker.ScalarFormatter())
plt.show()
给你这样的东西:
您可能想通读this堆栈溢出答案以获取更多/更好的信息。