【问题标题】:How to remove axis in pyplot.bar?如何删除 pyplot.bar 中的轴?
【发布时间】:2013-09-28 20:48:50
【问题描述】:

是否有可能在没有 y-(x-) 轴的情况下绘制条形图?在演示文稿中,所有冗余信息都必须删除,所以我想开始删除轴。我没有在 matplotlib 文档中看到有用的信息。也许你有比 pyplot.. 更好的解决方案?

编辑:除了底部的轴外,我想在条形周围有线条。这可能吗

#!/usr/bin/env python 
import matplotlib.pyplot as plt

ind = (1,2,3)
width = 0.8
fig = plt.figure(1)
p1 = plt.bar(ind,ind)
# plt.show() 
fig.savefig("test.svg")

编辑:我没有看到使用 plt.show() 仍然存在没有刻度的 yaxis。

【问题讨论】:

    标签: python matplotlib bar-chart


    【解决方案1】:

    要使轴不可见,请尝试类似

    import matplotlib.pyplot as plt
    ind = (1,2,3)
    width = 0.8
    fig,a = plt.subplots()
    p1 = a.bar(ind,ind)
    a.xaxis.set_visible(False)
    a.yaxis.set_visible(False)
    plt.show()
    

    这是你的意思吗?

    【讨论】:

    • 是的,这就是我的意思。 (啊,查阅 matplotlib 文档,现在我明白了为什么我在某个地方看到了在谷歌上搜索 subplot 命令的原因。不知何故,我想“我不需要 subplots..”。)
    • 哇,我的胃知道。 yaxis 的刻度消失了,但框架仍然存在,当我将其保存为 svg 时。我开始一个新问题。这就是我犹豫的原因。
    • 好的,谢谢。你给了我谷歌的话。最后我使用了spines - 我希望明天我会添加我的代码来帮助其他人。
    • stackoverflow.com/questions/14908576/… frameon 在这里也很有帮助
    • @frameon 是的,我看到了那个,但这根本没有帮助。如果我是对的,它只显示如何删除所有轴。 http://matplotlib.org/examples/pylab_examples/spine_placement_demo.html 引导我达到我想要的结果。
    【解决方案2】:

    这是我最后使用的代码。它不再是最小的了。也许有帮助。

    import matplotlib.pyplot as plt
    import numpy as np
    
    def adjust_spines(ax,spines):
        for loc, spine in ax.spines.items():
            if loc in spines:
                spine.set_smart_bounds(True)
            else:
                spine.set_color('none') # don't draw spine
        # turn off ticks where there is no spine
        if 'left' in spines:
            ax.yaxis.set_ticks_position('left')
        else:
            # no yaxis ticks
            ax.yaxis.set_ticks([])
    
    def nbar(samples, data, err, bWidth=0.4, bSafe=True, svgName='out'):
        fig,a = plt.subplots(frameon=False)
        if len(data)!=len(samples):
            print("length(data) must be equal to length(samples)!")
            return
        ticks = np.arange(len(data))
        p1 = plt.bar(ticks, data, bWidth, yerr=err)
        plt.xticks(ticks+bWidth/2., samples )
        adjust_spines(a,['bottom'])
        a.xaxis.tick_bottom()
        if bSafe:
            fig.savefig(svgName+".svg")
    
    samples = ('Sample1', 'Sample2','Sample3')
    qyss = (91, 44, 59)
    qysserr = (1,5,4)
    nbar(samples,qyss,qysserr,svgName="test")
    

    感谢所有贡献者。

    【讨论】:

      猜你喜欢
      • 2010-10-29
      • 2015-08-23
      • 2023-02-10
      • 2022-11-02
      • 1970-01-01
      • 1970-01-01
      • 2014-05-23
      • 2020-02-08
      相关资源
      最近更新 更多