将x和y标签添加到pandas图中

假设我有下面的代码使用pandas来绘制一些非常简单的代码:

import pandas as pd values = [[1,2], [2,5]] df2 = pd.DataFrame(values, columns=['Type A', 'Type B'], index=['Index 1','Index 2']) df2.plot(lw=2,colormap='jet',marker='.',markersize=10,title='Video streaming dropout by category') 

产量

如何轻松设置x和y标签,同时保留使用特定颜色映射的能力? 我注意到,pandas dataframes的plot()包装器没有采用任何特定的参数。

df.plot()函数返回一个matplotlib.axes.AxesSubplot对象。 您可以在该对象上设置标签。

 In [4]: ax = df2.plot(lw=2,colormap='jet',marker='.',markersize=10,title='Video streaming dropout by category') In [6]: ax.set_xlabel("x label") Out[6]: <matplotlib.text.Text at 0x10e0af2d0> In [7]: ax.set_ylabel("y label") Out[7]: <matplotlib.text.Text at 0x10e0ba1d0> 

在这里输入图像说明

或者,更简洁地说: ax.set(xlabel="x label", ylabel="y label")

或者,索引x轴标签自动设置为索引名称(如果有)。 所以df2.index.name = 'x label'也可以。

如果您标记DataFrame的列和索引,pandas会自动提供适当的标签:

 import pandas as pd values = [[1,2], [2,5]] df = pd.DataFrame(values, columns=['Type A', 'Type B'], index=['Index 1','Index 2']) df.columns.name = 'Type' df.index.name = 'Index' df.plot(lw=2, colormap='jet', marker='.', markersize=10, title='Video streaming dropout by category') 

在这里输入图像说明

在这种情况下,您仍然需要手动提供y标签(例如,通过plt.ylabel ,如其他答案中所示)。

你可以这样做:

 import matplotlib.pyplot as plt import pandas as pd plt.figure() values = [[1,2], [2,5]] df2 = pd.DataFrame(values, columns=['Type A', 'Type B'], index=['Index 1','Index 2']) df2.plot(lw=2,colormap='jet',marker='.',markersize=10,title='Video streaming dropout by category') plt.xlabel('xlabel') plt.ylabel('ylabel') plt.show() 

显然,你必须用你想要的stringreplacestring“xlabel”和“ylabel”。

可以使用axis.set函数将两个标签一起设置。 寻找例子:

 import pandas as pd import matplotlib.pyplot as plt values = [[1,2], [2,5]] df2 = pd.DataFrame(values, columns=['Type A', 'Type B'], index=['Index 1','Index 2']) ax = df2.plot(lw=2,colormap='jet',marker='.',markersize=10,title='Video streaming dropout by category') # set labels for both axes ax.set(xlabel='x axis', ylabel='y axis') plt.show() 

在这里输入图像说明

对于使用pandas.DataFrame.hist

 plt = df.Column_A.hist(bins=10) 

请注意,你会得到一堆地块,而不是一个阴谋。 因此,设置x标签,你需要做这样的事情

 plt[0][0].set_xlabel("column A")