我正在寻找一种方法来防止标签重叠。在搜索Stackoverflow时,我甚至找不到任何关于如何控制x轴间距的建议。
matplotlib.pyplot.xticks(x, xticks, rotation=90)
matplotlib.pyplot.plot(x, y)
matplotlib.pyplot.bar(x, y, alpha=0.2)
matplotlib.pyplot.title(
f"średnia cena produktu {self.identifier}, według kontrahentów")
matplotlib.pyplot.xlabel("kontrahent")
matplotlib.pyplot.ylabel("cena")
matplotlib.pyplot.tight_layout()
matplotlib.pyplot.savefig(os.path.join(
"products", self.identifier, "wykres.png"))
matplotlib.pyplot.close()
2条答案
按热度按时间b91juud31#
首先,如果没有你的数据,很难确切地知道发生了什么,所以我不得不创建虚拟数据并调整你的变量,'self. identifier'和'xticks',因为我们不知道它们是什么。
也就是说,你要找的函数是
如下面的代码所示:
wfveoks02#
这个来自pythonpedia.com的解决方案为我解决了这个问题。为了长寿,在这里复制,所有功劳都归功于ImportanceOfBeingEarnest和页面https://pythonpedia.com/en/knowledge-base/44863375/how-to-change-spacing-between-ticks-in-matplotlib-。
来自ImportanceOfBeingEarnest的回复:
刻度标签之间的间距完全由轴上刻度之间的间距决定。因此,在给定的刻度标签之间获得更多空间的唯一方法是使轴更大。
为了确定标签不重叠所需的空间,可以找出最大的标签,并将其长度乘以ticklabels的数量。然后可以调整轴周围的边距,并将计算出的尺寸设置为新的图形尺寸。
请注意,如果绘图窗口中显示的图形比屏幕大,它将再次缩小,因此保存时调整大小的图形仅以新的大小显示。或者,您可以选择将其合并到具有滚动条的窗口中。