matplotlib 如何填充颜色的脊椎和保持一个利润率的数据栏

lzfw57am  于 2023-06-23  发布在  其他
关注(0)|答案(1)|浏览(139)

我想给我的图的所有负区域(y=0轴以下)着色。
函数facecolor为整个图形设置它。然后,我尝试使用fill_between,但由于边距,即使我将其添加到轴的最大值中,它也会得到白色。
以下是我目前的情节(复制下面的截图):

import matplotlib.pyplot as plt
fig, ax = plt.subplots()

# loading file

for row in file:
    # getting x, y, color and label from row
    plt.plot(x, y, color=color, linewidth = 3,
         marker='|', markerfacecolor=color, markersize=12, label=label) 
    # x = [-a, b] and y = [c, c] making only horizontal lines with two points (one negative and one positive)

plt.axvline(x=0, color="k", linestyle='dashed')
plt.axhline(y=0, color="r", linewidth=4)

xmarg, ymarg = plt.margins()
xmin, xmax, ymin, ymax = plt.axis()
ax.fill_between([xmin-xmarg, xmax+xmarg], ymin-ymarg, 0, color='lightgray')

但是背景颜色没有粘在视口边界(左,右和底部)上,仍然有一个边距。如果我用ax.margins(0)删除边距,它就可以工作。但我想保留它们,以避免我的图表粘在边框上。
您可以在页边空白下方的图片中看到:

那么,如何在没有边距/填充的情况下填充横坐标下方的图形的背景颜色?
如果我去掉页边距,我的数据线会粘在边框上,我不想这样。我想保留数据和坐标轴之间的边距。但是我想填充视口下半部分的背景色,而不仅仅是数据区域。

a0zr77ik

a0zr77ik1#

  • 使用ax.margins(0)将边距减少到0
  • 使用.set_xlim.set_ylim在数据条的末端与左、右和底部 Backbone.js 之间留出缓冲空间。
import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.plot(range(-5, 5), range(-5, 5))

# change xlim and ylim to add a buffer between the spine and data bars
ax.set_ylim(-5.5, 4.5)
ax.set_xlim(-5.5, 4.5)

# remove the margins
ax.margins(0)

# fill to the spines
ax.fill_between((-5.5, 4.5), -5.5, 0, color='purple', alpha=0.5)

相关问题