当前位置: 首页 > 知识库问答 >
问题:

如何添加共享的x标签和y标签到熊猫的情节?

南宫俊喆
2023-03-14

人们可以使用熊猫轻松地从数据框中创建子情节:

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({'A': [0.3, 0.2, 0.5, 0.2], 'B': [0.1, 0.0, 0.3, 0.1], 'C': [0.2, 0.5, 0.0, 0.7], 'D': [0.6, 0.3, 0.4, 0.6]}, index=list('abcd'))

ax = df.plot(kind="bar", subplots=True, layout=(2, 2), sharey=True, sharex=True, rot=0, fontsize=20)

现在如何将x和y标签添加到生成的绘图中?这里是一个单一的情节解释。因此,如果我想向特定子批次添加标签,我可以:

ax[1][0].set_xlabel('my_general_xlabel')
ax[0][0].set_ylabel('my_general_ylabel')
plt.show()

这就产生了:

如何添加标签,使它们居中,而不仅仅是指一行/列?

共有3个答案

施琦
2023-03-14

这将创建一个不可见的111轴,您可以在其中设置常规x和y标签:

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({'A': [0.3, 0.2, 0.5, 0.2], 'B': [0.1, 0.0, 0.3, 0.1],
                   'C': [0.2, 0.5, 0.0, 0.7], 'D': [0.6, 0.3, 0.4, 0.6]},
                  index=list('abcd'))
ax = df.plot(kind="bar", subplots=True, layout=(2, 2), sharey=True,
             sharex=True, rot=0, fontsize=12)

fig = ax[0][0].get_figure()  # getting the figure
ax0 = fig.add_subplot(111, frame_on=False)   # creating a single axes
ax0.set_xticks([])
ax0.set_yticks([])
ax0.set_xlabel('my_general_xlabel', labelpad=25)
ax0.set_ylabel('my_general_ylabel', labelpad=45)

# Part of a follow up question: Modifying the fontsize of the titles:
for i,axi in np.ndenumerate(ax):
    axi.set_title(axi.get_title(),{'size' : 16})
公羊宇定
2023-03-14

另一个解决方案是:创建一个大的子地块,然后设置公共标签。这是我得到的。

下面是源代码。

import pandas as pd
import matplotlib.pyplot as plt

fig = plt.figure()
axarr = fig.add_subplot(221)   

df = pd.DataFrame({'A': [0.3, 0.2, 0.5, 0.2], 'B': [0.1, 0.0, 0.3, 0.1], 'C': [0.2, 0.5, 0.0, 0.7], 'D': [0.6, 0.3, 0.4, 0.6]}, index=list('abcd'))
axes = df.plot(kind="bar", ax=axarr, subplots=True, layout=(2, 2), sharey=True, sharex=True, rot=0, fontsize=20)

# Create a big subplot
ax = fig.add_subplot(111, frameon=False)
# hide tick and tick label of the big axes
plt.tick_params(labelcolor='none', top='off', bottom='off', left='off', right='off')

ax.set_xlabel('my_general_xlabel', labelpad=10) # Use argument `labelpad` to move label downwards.
ax.set_ylabel('my_general_ylabel', labelpad=20)

plt.show()
龙星渊
2023-03-14

x和y标签绑定到matplotlib中的一个轴。因此,使用xtagytag命令来标记几个子情节是没有意义的。

但是,可以创建一个简单的文本并将其放置在所需的位置fig.text(x,y,text)将一些文本放置在图形坐标中的坐标xy,即图形的左下角具有坐标(0,0)右上角(1,1)

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({'A': [0.3, 0.2, 0.5, 0.2], 'B': [0.1, 0.0, 0.3, 0.1], 'C': [0.2, 0.5, 0.0, 0.7], 'D': [0.6, 0.3, 0.4, 0.6]}, index=list('abcd'))
axes = df.plot(kind="bar", subplots=True, layout=(2,2), sharey=True, sharex=True)

fig=axes[0,0].figure
fig.text(0.5,0.04, "Some very long and even longer xlabel", ha="center", va="center")
fig.text(0.05,0.5, "Some quite extensive ylabel", ha="center", va="center", rotation=90)

plt.show()

此解决方案的缺点是,放置文本的位置坐标需要手动设置,并且可能取决于地物大小。

 类似资料:
  • 假设我有以下代码,它使用pandas绘制了一些非常简单的东西: 如何轻松设置x和y标签,同时保留使用特定颜色贴图的能力?我注意到pandas DataFrames的包装器没有任何特定的参数。

  • 提前感谢您的帮助!(代码如下所示) 我正在绘制一个时间序列热图,我正在努力为x轴、y轴添加标签,并指定一个标题。我曾尝试使用xlabel='Days in a year',但出现以下语法错误: 当代码中没有xlabel='Hello'时,我没有得到这个错误。如何正确添加这些标签?应该是这样的:

  • 我试图将x轴和y轴标签以及标题放在我通过熊猫创建的三面板直方图上,但似乎无法正确放置。我在标题和三个图中最后一个的x轴标签中得到的唯一结果。我想要一个总的标题,XLabel和YLabel。制作该图的代码如下。有什么建议吗?

  • 问题内容: 我正在根据创建一个图: 问题是x和y轴中有不想要的标签,这些标签来自层次结构索引。因此,我想尝试删除这些标签,例如: 但这没有效果。如何删除x和y轴上的标签? 问题答案: 没有这个问题,就很难知道标签来自何处(我不知道数据帧的外观如何,这样才能产生标签,因为默认情况下不应有任何标签。)但是,标签可以使用已知方法和群集网格的热图轴进行设置- 因此也设置为空字符串。 所以如果是一个实例,

  • 当我在ipython笔记本中绘制熊猫系列并根据这个答案设置标签时: 并对细胞进行评估。绘图显示标题,但不显示x或y标签。如何在ipython笔记本中执行此操作? 还有Chrispy在那篇帖子上的评论 为什么x和y标签不能作为参数添加到pd.plot()中? 也可能是一个值得回答的相关问题。 编辑:谢谢,现在我知道错误,我的错。但是为什么它没有给我一个错误的值分配给方法

  • 我想设置我的情节标题和x和y标签。总数都是浮点数64.我想尽可能简单地做这件事。 以下是我的代码部分: