【问题标题】:Bidirectional Bar Plot in python, how to remove all background colours?python中的双向条形图,如何删除所有背景颜色?
【发布时间】:2021-11-01 17:12:21
【问题描述】:

我编写了这段代码(使用this 示例):

import matplotlib.pyplot as plt
import matplotlib as mpl
import pandas as pd
import seaborn as sns
#sns.set()
#%matplotlib notebook
#plt.style.use('classic')

class_list = ['test1','test2','test3','test4','test5','test6','test7']
data = pd.DataFrame(data=zip(class_list,average_length,num_entries),columns=['Class','Lens','Nums'])
data.set_index('Class', inplace=True)

font_color = '#525252'
hfont = {'fontname':'Calibri'}
#facecolor = '#eaeaf2'
color_red = '#fd625e'
color_blue = '#01b8aa'
index = data.index
column0 = data['Lens']
column1 = data['Nums']
title0 = "Title 1"
title1 = 'Title 2'

fig, axes = plt.subplots(figsize=(10,5), facecolor=facecolor, ncols=2,sharey=True)
fig.tight_layout()

axes[0].barh(index, column0, align='center', color=color_red, zorder=10)
axes[0].set_title(title0, fontsize=18, pad=15, color=color_red, **hfont)
axes[1].barh(index, column1, align='center', color=color_blue, zorder=10)
axes[1].set_title(title1, fontsize=18, pad=15, color=color_blue, **hfont)


# If you have positive numbers and want to invert the x-axis of the left plot
axes[0].invert_xaxis() 


# To show data from highest to lowest
plt.gca().invert_yaxis()

axes[0].set(yticks=data.index, yticklabels=data.index)
axes[0].yaxis.tick_left()
axes[0].tick_params(axis='y', colors='white') # tick color

axes[1].set_xticklabels(['0','20', '40', '60', '80', '100', '120'])


for label in (axes[0].get_xticklabels() + axes[0].get_yticklabels()):
    label.set(fontsize=13, color=font_color, **hfont)
for label in (axes[1].get_xticklabels() + axes[1].get_yticklabels()):
    label.set(fontsize=13, color=font_color, **hfont)
    
plt.subplots_adjust(wspace=0, top=0.85, bottom=0.1, left=0.18, right=0.95)
plt.show()

输出是:

我想删除所有背景颜色(所以没有“图 1”,没有白色网格线,背景是纯白色而不是蓝-y 紫色),然后在 x 和 y 轴上添加一条黑线.

当我尝试添加 x 和 y 轴线时:

plt.update_xaxes(showline=True, linewidth=2, linecolor='black')
plt.update_yaxes(showline=True, linewidth=2, linecolor='black')

没有错误,但也没有图表。

编辑 1: 添加

axes[0].set_facecolor('white')
axes[1].set_facecolor('white')

用于去除背景颜色。我还尝试通过以下方式添加 x 和 y 轴线:

axes[0].axvline(0)
axes[0].axhline(0)

这会在底部栏的中间产生一条线:

(并且“图 1”仍然存在)。

【问题讨论】:

  • sns.set_style('white')?只需删除对.set_title 的调用?你有没有尝试过,还是只是盲目地抄袭?
  • 谢谢你。我添加了一些我尝试过的东西作为上面的编辑。谢谢。我不认为.set_title 有效(但很高兴错了),因为我要删除的是图表顶部的条形图,上面写着“图 1”,但我没有定义在脚本中,所以我猜这是默认设置。
  • 更改窗口标题:fig.canvas.manager.set_window_title('') 见Change figure window title

标签: python matplotlib seaborn


【解决方案1】:

参数facecolor负责背景颜色。您可以将其删除以具有白色背景。

使用set_window_title 为窗口添加新标题。

修改后的代码如下:

fig, axes = plt.subplots(figsize=(10,5), ncols=2,sharey=True) # Removed facecolor param
fig.tight_layout()
fig.canvas.set_window_title('Custom Title') # Adds new title to the window

【讨论】:

  • 谢谢,我能问一下.set_window_title()吗,你可以从我的输出中看到一个灰色条,里面有“图1”,但“图1”没有出现在任何地方在我的代码中。所以.set_window_title() 好像没变?理想情况下,我想完全删除绘图顶部的“图 1”栏,但我看不到我调用什么参数来调用它,但更改 .set_window_title() 似乎并没有改变它?跨度>
  • 您可以尝试使用fig.savefig('plot.pdf') 保存绘图吗?这将只保存主要的绘图区域。您看到的灰色条通常用于导航目的,我不确定如果没有该灰色条,您将如何最小化或关闭绘图。
  • 谢谢你,太好了。
猜你喜欢
  • 1970-01-01
  • 2023-04-08
  • 2020-06-03
  • 1970-01-01
  • 1970-01-01
  • 2022-01-05
  • 1970-01-01
  • 1970-01-01
  • 2011-05-22
相关资源
最近更新 更多