如何在图上添加刻度线编号标签?

时间:2018-06-25 17:54:57

标签: python python-3.x 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

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()

然后我得到这种图形:

example graph

y轴上的刻度线不显示。关于如何解决此问题的任何想法?

1 个答案:

答案 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()

graph1

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()

给你这样的东西:

graph2

您可能想通读this堆栈溢出答案以获取更多/更好的信息。