使用不同比例在不同轴上绘制两个数据帧列

时间:2014-06-19 03:36:49

标签: python matplotlib pandas

我试图绘制一个数据帧的两列,一个具有Log Yscale,另一个具有常规数据帧。我不确定语法是什么,文档也没有太多帮助。任何人都可以建议正确的语法是什么,以及如何学习matplotlib如何在python中工作?

2 个答案:

答案 0 :(得分:4)

Pandas提供了在secondary y axis上绘图的选项。除此之外,您只需要使用.set_scale('log')更改辅助轴的比例。

以下是一个例子:

import matplotlib.pylab as plt
import pandas as pd

df = pd.DataFrame({'x': [1,2,0,4], 'y': [1e1, 5e3, 3e2, 3e4]})

ax = df.plot(secondary_y='y')
ax2 = ax.twinx()
ax2.set_yscale('log')

plt.show()

plot with secondary y in log scale

答案 1 :(得分:0)

你可以沿着这些方向做点什么:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

arr_base = np.arange(2,11)
arr_log = np.log(arr_base)
my_df = pd.DataFrame(np.vstack((arr_base, arr_log)).T, columns=['a', 'b'])

fig = plt.figure()
sub_plot = fig.add_subplot(1, 1, 1)
sub_plot.plot(arr_base)
sub_plot.plot(arr_log)
plt.savefig('myplot.svg')

学习matplotlib基础知识的一个很好的资源,特别是与熊猫有关,是Wes McKinney的书“Python for Data Analysis”。它不仅在第8章中对matplotlib进行了很好的介绍(你可以在第228页找到与我的例子非常接近的东西),但是如果你计划大量使用熊猫,它也是一个必不可少的参考。 numpy的。

matplotlib的homepage也有一些教程的链接。他们还保持page of example uses。两者都是可靠的资源。