在熊猫图中添加x和y标签

假设我有下面的代码,使用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')

Output

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

494211 次浏览

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

ax = df2.plot(lw=2, colormap='jet', marker='.', markersize=10, title='Video streaming dropout by category')
ax.set_xlabel("x label")
ax.set_ylabel("y label")

enter image description here

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

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

你可以这样做:

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()

显然,你必须替换字符串'xlabel'和'ylabel'用你想要的。

如果你给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')

enter image description here

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

对于使用pandas.DataFrame.hist的情况:

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

注意,您得到的是一个数组的图,而不是一个图。因此,要设置x标签,您需要这样做

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

可以通过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()

enter image description here

pandas使用matplotlib作为基本的数据帧图。因此,如果你正在使用pandas进行基本的绘图,你可以使用matplotlib进行绘图定制。然而,我在这里提出了另一种方法,使用seaborn,它允许更多的自定义情节,同时不进入matplotlib的基本级别。

工作代码:

import pandas as pd
import seaborn as sns
values = [[1, 2], [2, 5]]
df2 = pd.DataFrame(values, columns=['Type A', 'Type B'],
index=['Index 1', 'Index 2'])
ax= sns.lineplot(data=df2, markers= True)
ax.set(xlabel='xlabel', ylabel='ylabel', title='Video streaming dropout by category')

enter image description here

关于……

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'])


(df2.plot(lw=2,
colormap='jet',
marker='.',
markersize=10,
title='Video streaming dropout by category')
.set(xlabel='x axis',
ylabel='y axis'))


plt.show()

在Pandas 版本1.10中,你可以在方法plot中使用参数xlabelylabel:

df.plot(xlabel='X Label', ylabel='Y Label', title='Plot Title')

enter image description here