如何在Python 3中为matplotlib 2.0 `ax`对象添加黑色边框?

6qqygrtg  于 2023-11-22  发布在  Python
关注(0)|答案(3)|浏览(157)

我最近一直在使用matplotlib中的样式表,我非常喜欢seaborn-white看起来很干净,我希望能够将边框添加到其他样式(如ggplotseaborn-whitegrid)中。

如何在fig, ax = plt.subplots()中的ax对象周围添加黑色边框?

import pandas as pd
import numpy  as np
from collections import *

Se_data = pd.Series(Counter(np.random.randint(0,10,100)))
with plt.style.context("seaborn-whitegrid"):
    fig, ax = plt.subplots()
    Se_data.plot(kind="barh", ax=ax, title="No Border")
with plt.style.context("seaborn-white"):
    fig, ax = plt.subplots()
    Se_data.plot(kind="barh", ax=ax, title="With Border")

字符串


的数据
现答复如下:

Se_data = pd.Series(Counter(np.random.randint(0,10,100)))
with plt.style.context("seaborn-whitegrid"):
    fig, ax = plt.subplots()
    Se_data.plot(kind="barh", ax=ax, title="No Border")
    ax.spines['bottom'].set_color('0.5')
    ax.spines['top'].set_color(None)
    ax.spines['right'].set_color('0.5')
    ax.spines['left'].set_color(None)
    ax.patch.set_facecolor('0.1')
    plt.grid(b=True, which='major', color='0.2', linestyle='-')
    plt.grid(b=True, which='minor', color='0.2', linestyle='-')
    ax.tick_params(axis='x', colors='0.7', which='both')
    ax.tick_params(axis='y', colors='0.7', which='both')
    ax.yaxis.label.set_color('0.9')
    ax.xaxis.label.set_color('0.9')
    ax.margins(5)
    fig.patch.set_facecolor('0.15')


zphenhs4

zphenhs41#

看看这个你要找的是这两行

ax.patch.set_edgecolor('black')  

ax.patch.set_linewidth(1)

字符串

9q78igpj

9q78igpj2#

你可能想要ax.spines.set_color()
这些将为您提供给予广泛的定制解决方案选项:

ax.spines['bottom'].set_color('0.5')
ax.spines['top'].set_color(None)
ax.spines['right'].set_color('0.5')
ax.spines['left'].set_color(None)
ax.patch.set_facecolor('0.1')
plt.grid(b=True, which='major', color='0.2', linestyle='-')
plt.grid(b=True, which='minor', color='0.2', linestyle='-')
ax.tick_params(axis='x', colors='0.7', which='both')
ax.tick_params(axis='y', colors='0.7', which='both')
ax.yaxis.label.set_color('0.9')
ax.xaxis.label.set_color('0.9')
ax.margins(0.5)
fig.patch.set_facecolor('0.15')

字符串
更多详情请参见:http://matplotlib.org/api/spines_api.html

5tmbdcev

5tmbdcev3#

seaborn-whitegrid和seaborn-white样式之间的区别是

seaborn-whitegrid

axes.grid: True
axes.edgecolor: .8
axes.linewidth: 1

字符串

海白

axes.grid: False
axes.edgecolor: .15
axes.linewidth: 1.25


因此,以下将提供相同的图:

import matplotlib.pyplot as plt
import pandas as pd
import numpy  as np
from collections import *

Se_data = pd.Series(Counter(np.random.randint(0,10,100)))
with plt.style.context("seaborn-whitegrid"):
    plt.rcParams["axes.edgecolor"] = "0.15"
    plt.rcParams["axes.linewidth"]  = 1.25
    fig, ax = plt.subplots()
    Se_data.plot(kind="barh", ax=ax, title="No Border")
with plt.style.context("seaborn-white"):
    plt.rcParams["axes.grid"] = True
    fig, ax = plt.subplots()
    Se_data.plot(kind="barh", ax=ax, title="With Border")


x1c 0d1x的数据

相关问题