以不同的比例绘制不同轴上的两个数据帧列

2024-10-01 13:42:24 发布

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

我试图绘制一个数据帧的两列,一列有logyscale,另一列有常规列。我不确定语法是什么,文档也没有太大帮助。有谁能告诉我正确的语法是什么,以及如何学习matplotlib在python中的工作方式吗?在


Tags: 数据文档matplotlib方式语法绘制常规logyscale
2条回答

你可以按照以下思路做些事情:

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基础知识的一个很好的资源,特别是与pandas相关的内容,是Wes McKinney的书,“Python for Data Analysis”。它不仅在第8章中对matplotlib有了很好的介绍(你可以在228页和其他一些页面上找到与我的例子非常接近的东西),而且如果你打算大量使用pandas,它也是一个重要的参考资料也很好的介绍了纽比。在

matplotlib的homepage还有一些教程的链接。它们还维护一个page of example uses。两者都是可靠的资源。在

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

相关问题 更多 >