当前位置: 首页 > 面试题库 >

Matplotlib:将y标记向左对齐

魏英勋
2023-03-14
问题内容

我有可变长度的刻度标签,我想将它们向左对齐(即,较短的标签和y轴之间有一个空格)。有什么合理的方法可以做到这一点吗?使用水平对齐方式“向左”会将其向左对齐,但是它们都从轴开始,因此最终在绘图内。因此,另一个问题可能是-
我可以更改其起点吗?

演示代码:

import numpy as np
import matplotlib.pyplot as plt

ticks = ["Lorem ipsum dolor sit amet, consectetur adipisicin", "g elit, sed do",      "eiusmod tempor incididunt ut labo", "re et dolore magna ali", "qua. Ut en", "im ad minim veniam, quis nostr", "ud exercitation ullamco labo", "ris nisi ut aliquip ex ea c", "ommodo co", "nsequat. Duis aute irure dolor in rep"]
data = [5,1,2,4,1,4,5,2,1,5]
ind = np.arange(len(data))
fig = plt.figure()
ax = plt.subplot(111)
ax.barh(ind, data, 0.999)
ax.set_yticks(ind + 0.5)
r = ax.set_yticklabels(ticks)#, ha = 'left')
fig.set_size_inches(12, 8)
fig.savefig(r'C:\try.png', bbox_extra_artists=r, bbox_inches='tight')

问题答案:

您只需要添加一个pad。查看matplotlib刻度相对于轴的位置

yax = ax.get_yaxis()
yax.set_tick_params(pad=pad)

(文件)

确定垫子应该是什么:

import numpy as np
import matplotlib.pyplot as plt

ticks = ["Lorem ipsum dolor sit amet, consectetur adipisicin", "g elit, sed do",      "eiusmod tempor incididunt ut labo", "re et dolore magna ali", "qua. Ut en", "im ad minim veniam, quis nostr", "ud exercitation ullamco labo", "ris nisi ut aliquip ex ea c", "ommodo co", "nsequat. Duis aute irure dolor in rep"]
data = [5,1,2,4,1,4,5,2,1,5]
ind = np.arange(len(data))
fig = plt.figure(tight_layout=True) # need tight_layout to make everything fit
ax = plt.subplot(111)
ax.barh(ind, data, 0.999)
ax.set_yticks(ind + 0.5)
r = ax.set_yticklabels(ticks, ha = 'left')
fig.set_size_inches(12, 8, forward=True) 
# re-size first, the shift needs to be in display units
plt.draw()  # this is needed because get_window_extent needs a renderer to work
yax = ax.get_yaxis()
# find the maximum width of the label on the major ticks
pad = max(T.label.get_window_extent().width for T in yax.majorTicks)

yax.set_tick_params(pad=pad)
plt.draw()


 类似资料:
  • 我正在使用scatterplot函数在垂直线上创建句柄的外观,以描绘图形的某些部分。然而,为了使它们看起来正确,我需要能够将散点图标记向左对齐(对于左线/划定线)和/或向右对齐(对于右线/划定线)。 这里有一个例子: 上面的代码几乎给出了我要找的图形,如下所示: 对如何以灵活的方式实现这一目标有任何指导或建议? 注意:实际上,我的索引是而不是我为这个简单示例提供的整数。

  • 问题内容: 是否有一种简单的方法可以将y轴标签放在图的右侧?我知道可以使用来对刻度标签进行此操作,但是我想知道是否也可以对轴标签进行此操作。 我想到的一个想法是使用 但是,在保留y轴的范围的同时,将所有标签(刻度和轴标签)放置在右侧并没有达到预期的效果。简而言之,我想要一种将所有y轴标签从左向右移动的方法。 问题答案: 看来您可以使用以下方法做到这一点: 请参阅此处的示例。

  • 我想设置一个JButton,使其图标与它的左侧对齐,而文本居中。 我已经找到了如何让其中一个左,另一个右,或两者在同一个设置,但我找不到我要找的。 当然,我总是可以重新定义绘制方法,但我正在寻找一种更精简的方法。

  • 看看我的代码,有谁能告诉我,我如何在滚动窗格的右侧换行文本区域,以及如何将它们左对齐?

  • 我试图使用matplotlib构建一个信息图表,我想左对齐所有y轴的刻度标签。 我想把所有的刻度标签移到左边——我想让它们都从与哥伦比亚特区相同的x位置开始。 我试图使用做到这一点,但我不知道如何做到这一点。

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