Python Matplotlib:如何用纯色自动填充线条图上方的区域?

Python Matplotlib:如何用纯色自动填充线条图上方的区域?,python,matplotlib,Python,Matplotlib,我做了一张有两张折线图的图表。红线是当天的高温,蓝线是当天的低温。Temps是数据帧,High是高温,Low是低温 Temps = Temps.set_index('Date') Temps['High'].plot() Temps['Low'].plot() 下面是结果图表: 如何用纯红自动填充红线上方的区域?然后自动用纯蓝色填充蓝线下方的区域?MatPlotLib是否可以使其与下图类似(请原谅粗涂作业) 是的,matplotlib可以在之间使用fill\u # library impor

我做了一张有两张折线图的图表。红线是当天的高温,蓝线是当天的低温。Temps是数据帧,High是高温,Low是低温

Temps = Temps.set_index('Date')
Temps['High'].plot()
Temps['Low'].plot()
下面是结果图表:

如何用纯红自动填充红线上方的区域?然后自动用纯蓝色填充蓝线下方的区域?MatPlotLib是否可以使其与下图类似(请原谅粗涂作业)


是的,matplotlib可以在之间使用
fill\u

# library
import numpy as np
import matplotlib.pyplot as plt
 
# Create data
x=range(1,6)
y=[1,4,6,8,4]
z = [8-i for i in y]

# Area plot below line
plt.fill_between(x, y, color='g')
plt.show()

# Area plot above line
plt.fill_between(x, y, max(y), color='r')
plt.show()


完整解决方案:

import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({"Datum": ['1/2/2018',
                             '1/3/2018',
                             '1/4/2018',
                             '1/5/2018',
                             '1/6/2018',
                             '1/7/2018',
                             '1/8/2018',
                             '1/9/2018'],
                   "Menge": [19.5, 19.,19.5,19.5,21,19.5,20,23]})
# sns.lineplot(x="Datum", y="Menge", data=df)
df['Datum'] = pd.to_datetime(df['Datum'])
df.set_index('Datum', inplace=True)
df['Menge2'] = df.Menge+12
df['Menge'].plot()
df['Menge2'].plot()

# Area plot below line
plt.fill_between(df.index, df.Menge, color='g')
# plt.show()

# Area plot above line
plt.fill_between(df.index, df.Menge2, max(df.Menge2), color='r')
 


以下是我将如何处理它:

import numpy as np
import matplotlib.pyplot as plt

n = 20
low = 10 * np.random.rand(n, 1)
high = low + 5

f, ax = plt.subplots(1, 1)
ax.plot(range(n), low, color='g')
ax.plot(range(n), high, color='r')
ax.fill_between(range(n), low.squeeze(), ax.get_ylim()[0], color='g')
ax.fill_between(range(n), ax.get_ylim()[1], high.squeeze(),  color='r')

您可以使用matplotlib中的函数。如果要将matplotlib与pandas数据帧一起使用,这里有一个提示:

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

Temps = pd.DataFrame()
Temps['Date'] = pd.date_range(start='20-08-2019', end='20-09-2019', freq='D')
Temps['High'] = np.random.random(32)+2
Temps['Low'] = np.random.random(32)+1
Temps = Temps.set_index('Date')


plt.figure(figsize=(10,4))
plt.fill_between(Temps.index, Temps['High'], 4, facecolor='red')
plt.fill_between(Temps.index, Temps['Low'], 0, facecolor='blue')

我怀疑我们使用了“plt.fill_between”,但如果没有顶行来填充“between”(如图2中红色部分),会发生什么情况?如果有帮助,请接受它作为答案。谢谢你,谢谢你,小姑娘。我选择您的解决方案是因为它不需要我丢弃现有代码并重写所有内容。作为一名新的学习者,我试图理解如何修改我已经编写的代码以达到我想要的结果。对于其他解决方案,它没有使用我现有的数据帧,也没有使用我已经使用过的绘图方法,因此我对他们的解决方案更加困惑。感谢您扩展了我现有的代码(在您的“完整解决方案”中),而不是让我重做一切。这对我来说更容易理解。