Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在不挤压数字的情况下将长标题放在顶部?_Python_Matplotlib - Fatal编程技术网

Python 如何在不挤压数字的情况下将长标题放在顶部?

Python 如何在不挤压数字的情况下将长标题放在顶部?,python,matplotlib,Python,Matplotlib,在这个图中,我在顶部有一个很长的标题 我想在不挤压图形的情况下适合标题(保持为正方形) 我们能否在保持图形为正方形且标题位于顶部的同时,在左右两侧添加空间 from matplotlib import pyplot as plt import numpy as np title='A long sentence as a title' fig= plt.figure(figsize=(12, 12), dpi=100) plt.title(title, fontsize=75, pad=40,

在这个图中,我在顶部有一个很长的标题

我想在不挤压图形的情况下适合标题(保持为正方形)

我们能否在保持图形为正方形且标题位于顶部的同时,在左右两侧添加空间

from matplotlib import pyplot as plt
import numpy as np

title='A long sentence as a title'
fig= plt.figure(figsize=(12, 12), dpi=100)
plt.title(title, fontsize=75, pad=40, loc='center',fontweight='semibold')
plt.tick_params(axis='y', which='major', labelsize=75, width=3, length=10)
plt.tick_params(axis='y', which='minor', labelsize=75, width=3, length=10)

plt.style.use('ggplot')

ax = plt.gca()
ax.set_facecolor('white')
for edge_i in ['left']:
    ax.spines[edge_i].set_edgecolor("black")
    ax.spines[edge_i].set_linewidth(3)
    # This code draws line only between [0,1]
    ax.spines[edge_i].set_bounds(0, 1)

width = 0.9  # the width of the bars
x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
y=[0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]
plt.yticks(np.arange(0, 1.01, step=0.2))

plt.bar(x, y, width, color='violet', edgecolor="black", linewidth=3, zorder=1)

plt.ylim(-0.01, 1.01)

plt.tick_params(
    axis='x',  # changes apply to the x-axis
    which='both',  # both major and minor ticks are affected
    bottom=False,  # ticks along the bottom edge are off
    top=False,  # ticks along the top edge are off
    labelbottom=False)  # labels along the bottom edge are off

plt.show()

这可能会起作用,以保持绘图的方形,但我(至少)不知道如何不在“标题长度”或“字体大小”或“图形大小”上妥协,并仍然实现您希望的最终结果

我刚刚将下面的代码片段添加到您的代码中,以获得结果图

box=ax.get\u位置()
打印('调整大小前的宽度和高度:',box.Width,box.height)
偏移量=0.05
长方体尺寸=最大值(长方体宽度*(1.0-2*偏移),长方体高度*(1.0-2*偏移))
#沿x轴移动长方体,然后调整大小以保持纵横比
最大值设置位置([box.x0+偏移*box.width,box.y0,box尺寸,box尺寸])
box=ax.get_位置()
打印('调整大小后的宽度和高度:',box.Width,box.height)
输出
这可能会起作用,以保持绘图的方形,但我(至少)不知道如何不在“标题长度”或“字体大小”或“图形大小”上妥协,并仍然实现您希望的最终结果

我刚刚将下面的代码片段添加到您的代码中,以获得结果图

box=ax.get\u位置()
打印('调整大小前的宽度和高度:',box.Width,box.height)
偏移量=0.05
长方体尺寸=最大值(长方体宽度*(1.0-2*偏移),长方体高度*(1.0-2*偏移))
#沿x轴移动长方体,然后调整大小以保持纵横比
最大值设置位置([box.x0+偏移*box.width,box.y0,box尺寸,box尺寸])
box=ax.get_位置()
打印('调整大小后的宽度和高度:',box.Width,box.height)
输出
您可以使用
plt.text()
而不是
plt.title()
来调整它


您可以使用
plt.text()
而不是
plt.title()
来调整它


不幸的是,这没有帮助。标题仍然不见。有没有一种方法可以通过改变体型来达到这个目的?关键是还有其他类似的图形,我想在其他图形文件中保持图形大小和标题fontsize相同。更改figuresize可以做到这一点,我没有发布解决方案,假设您有一个使figuresize(16,16)工作的约束,但这次标题将比其他图形小。我正在寻找一种解决方案,在左右两侧添加空间作为额外空间。我不确定我能帮上忙。也许你可以等其他人回复!不幸的是,这没有帮助。标题仍然不见。有没有一种方法可以通过改变体型来达到这个目的?关键是还有其他类似的图形,我想在其他图形文件中保持图形大小和标题fontsize相同。更改figuresize可以做到这一点,我没有发布解决方案,假设您有一个使figuresize(16,16)工作的约束,但这次标题将比其他图形小。我正在寻找一种解决方案,在左右两侧添加空间作为额外空间。我不确定我能帮上忙。也许你可以等其他人回复!是否有一种方法可以将空间放在左边和右边,这样我们就不需要缩小fontsize?我修改代码时理解到左边和右边距都是图形的两边。我还将标题文本设置为左侧。是否有办法在左侧和右侧放置空格,以便我们不需要缩小字体大小?我修改代码时理解到,左侧和右侧的边距都是图形的两侧。我还将标题文本设置为左侧。
Width and height before resizing:  0.775 0.77
Width and height after resizing:  0.6975 0.6975
title='A long sentence as a title'
fig= plt.figure(figsize=(12, 12), dpi=100)
# plt.title(title, fontsize=75, pad=40, loc='center',fontweight='semibold')
plt.text(-5.5,1.1, title, fontsize=55, fontweight='semibold')
plt.tick_params(axis='y', which='major', labelsize=55, width=3, length=10)
plt.tick_params(axis='y', which='minor', labelsize=55, width=3, length=10)