微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 matplotlib 插图中调整轴标签和轴边界之间的间距

如何解决在 matplotlib 插图中调整轴标签和轴边界之间的间距

生成一个网络图,并将其作为插图添加到 matplotlib 中生成的图:

import networkx as nx
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib.transforms import BBox
import numpy as np

G = nx.gnm_random_graph(n=10,m=15,seed=1)
nxpos = nx.spring_layout(G,dim=3,seed=1)

nxpts = [nxpos[pt] for pt in sorted(nxpos)]
nx_lines = [(nxpts[i],nxpts[j]) for i,j in G.edges()]

# node values
values = [[1,0],[30,80,10,79,70,60,75,78,65,10],[1,.30,.10,.79,.70,.60,.75,.78,.65,.90]]
time = [0.0,0.1,0.2]  # in seconds

fig,ax = plt.subplots()
ax.plot([1,2,3],'go-',label='line 1',lw=2)

bBox = BBox.from_bounds(.6,.5,.5)
inax = fig.add_axes(bBox,projection = '3d')

# set angle
angle = 25
inax.view_init(10,angle)

# hide axes,make transparent
inax.grid('off')
inax.set_xlabel('x',labelpad=0,loc='right')
inax.set_ylabel('y',loc='top')
inax.set_zlabel('z',loc='right')
inax.set_xticklabels([])
inax.set_yticklabels([])
inax.set_zticklabels([])
    
# plot 3d
seen = set()
for i,j in G.edges():
    x = np.stack((nxpos[i],nxpos[j]))
    inax.plot(*x.T,color='k')
    if i not in seen:
        inax.scatter(*x[0],color='skyblue')
        seen.add(i)
    if j not in seen:
        inax.scatter(*x[1],color = "skyblue")
        seen.add(j)

fig.show()

Output of code block

刻度标签已被删除,因此轴和轴标签的边界框之间有很多空白(请检查上图中的插入轴标签)。为了调整轴边界框和轴标签间的间距,我尝试在 labelpad=0 中设置 inax.set_xlabel('x',loc='right')。但这不会删除空格。

如何将标签放置在轴边界附近?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。