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

Python 以不同比例绘制不同轴上的两个数据帧列,python,matplotlib,pandas,Python,Matplotlib,Pandas,我试图绘制一个数据帧的两列,一列有一个logyscale,另一列有一个常规的。我不确定语法是什么,文档也帮不了什么忙。有人能告诉我们正确的语法是什么,以及如何学习matplotlib在python中的工作原理吗 您可以按照以下思路做一些事情: 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

我试图绘制一个数据帧的两列,一列有一个logyscale,另一列有一个常规的。我不确定语法是什么,文档也帮不了什么忙。有人能告诉我们正确的语法是什么,以及如何学习matplotlib在python中的工作原理吗

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

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')
韦斯·麦金尼(Wes McKinney)的书《不仅在第8章中对matplotlib有很好的介绍》(你可以在第228页和其他页上找到与我的示例非常接近的内容),是学习matplotlib基础知识的一个很好的资源,尤其是与熊猫相关的知识,但如果你打算大量使用熊猫,这是一个重要的参考,同时也能很好地介绍numpy


matplotlib的也有一些教程的链接。他们还保持着良好的关系。两者都是可靠的资源。

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

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')
韦斯·麦金尼(Wes McKinney)的书《不仅在第8章中对matplotlib有很好的介绍》(你可以在第228页和其他页上找到与我的示例非常接近的内容),是学习matplotlib基础知识的一个很好的资源,尤其是与熊猫相关的知识,但如果你打算大量使用熊猫,这是一个重要的参考,同时也能很好地介绍numpy


matplotlib的也有一些教程的链接。他们还保持着良好的关系。两者都是可靠的资源。

熊猫提供了在地图上绘图的选项。除此之外,您只需使用
更改次轴的比例。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()

熊猫提供了在地图上绘图的选项。除此之外,您只需使用
更改次轴的比例。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()