matplotlib绘制柱状图时,控制间距
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matplotlib绘制柱状图时,控制间距相关的知识,希望对你有一定的参考价值。
参考技术A 绘制柱状图时,如果横轴刻度名过程,文字之间容易发生重叠,如图所示:网上博客的常用方法,修改bar的第一个参数,将每个柱子横坐标的值扩大二倍。
结果:没有变化,可能是受限于图表的大小,需要通过修改matplotlib的参数来解决
修改matplotlib的参数,增大图表大小,结果如图所示:
networkx:绘制多方图时的节点间距
【中文标题】networkx:绘制多方图时的节点间距【英文标题】:networkx: node spacing when plotting multipartite graph 【发布时间】:2021-01-26 02:42:10 【问题描述】:我想使用networkx
绘制一个多重图。但是,当添加更多节点时,情节变得非常拥挤。有没有办法在节点和分区之间留出更多空间?
查看multipartite_layout
的文档,我找不到这个的参数。
当然,可以为位置创建复杂的公式,但由于multipartite_layout
的间距对于小图来说已经很好看,我是如何将其扩展到更大的图。
有没有人知道如何(有效地)做到这一点?
示例代码,生成具有三个分区的图:
import matplotlib.pyplot as plt
import networkx as nx
# build graph:
G = nx.Graph()
for i in range (0,30):
G.add_node(i,layer=0)
for i in range (30,50):
G.add_node(i,layer=1)
for j in range(0,30):
G.add_edge(i,j)
G.add_node(100,layer=2)
G.add_edge(40,100)
# plot graph
pos = nx.multipartite_layout(G, subset_key="layer",)
plt.figure(figsize=(20, 8))
nx.draw(G, pos,with_labels=False)
plt.axis("equal")
plt.show()
当前拥挤的情节:
【问题讨论】:
尝试删除 plt.axis('equal') - 这在类似的例子中对我有用 【参考方案1】:nx.multipartite_layout
返回具有以下格式的字典:node: array([x, y])
我建议你试试pos = p:array_op(pos[p]) for p in pos
,其中array_op
是作用于每个节点位置的函数array([x, y])
。
在您的情况下,我认为沿 x 轴进行简单缩放就足够了,即
array_op = lambda x, sx: np.array(x[0]*sx, x[1])
.
出于可视化目的,我想这应该与@JPM 的评论等效。但是,这种方法为您提供了获得实际转换位置数据的优势。
最后,如果这样的统一转换不能满足你的需要,你可以随时根据dict的格式手动操作位置(尽管它可能效率较低)。
【讨论】:
以上是关于matplotlib绘制柱状图时,控制间距的主要内容,如果未能解决你的问题,请参考以下文章
Python 之 Matplotlib 柱状图(竖直柱状图和水平柱状图)直方图和饼状图
Python matplotlib绘制条形柱状图并添加数据标签