用python中的matplotlib绘制对数轴

2021-01-26 06:26:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用matplotlib绘制一个具有一个对数轴的图形。

我一直在看文档,但不知道语法。我知道这可能是一些简单的东西,比如在plot参数中的'scale=linear',但是我似乎没有把它弄对

示例程序:

import pylab
import matplotlib.pyplot as plt
a = [pow(10, i) for i in range(10)]
fig = plt.figure()
ax = fig.add_subplot(2, 1, 1)

line, = ax.plot(a, color='blue', lw=2)
pylab.show()
3条回答
网友
1楼 ·

首先,混合pylabpyplot代码不是很整洁。更重要的是,pyplot style is preferred over using pylab

下面是一个稍微清理过的代码,仅使用pyplot函数:

from matplotlib import pyplot

a = [ pow(10,i) for i in range(10) ]

pyplot.subplot(2,1,1)
pyplot.plot(a, color='blue', lw=2)
pyplot.yscale('log')
pyplot.show()

相关函数是^{}。如果使用面向对象的版本,请使用方法^{}替换它。记住,也可以使用^{}(或^{})更改X轴的比例。

检查我的问题What is the difference between ‘log’ and ‘symlog’?以查看matplotlib提供的一些图形比例示例。

网友
2楼 ·

您只需使用semilogy而不是plot:

from pylab import *
import matplotlib.pyplot  as pyplot
a = [ pow(10,i) for i in range(10) ]
fig = pyplot.figure()
ax = fig.add_subplot(2,1,1)

line, = ax.semilogy(a, color='blue', lw=2)
show()
网友
3楼 ·

您可以使用^{}方法。这允许您在创建Axes对象后更改比例。这也将允许您构建一个控件,以便在需要时让用户选择比例。

要添加的相关行是:

ax.set_yscale('log')

您可以使用'linear'切换回线性刻度。下面是您的代码的外观:

import pylab
import matplotlib.pyplot as plt
a = [pow(10, i) for i in range(10)]
fig = plt.figure()
ax = fig.add_subplot(2, 1, 1)

line, = ax.plot(a, color='blue', lw=2)

ax.set_yscale('log')

pylab.show()

result chart

相关问题