matplotlib 用不同的背景颜色绘制曲线[重复]

z9gpfhce  于 2023-10-24  发布在  其他
关注(0)|答案(2)|浏览(146)

此问题已在此处有答案

Filling above/below matplotlib line plot(2个答案)
上个月关门了。
我想在阅读数据文件后绘制一条曲线。曲线上方和下方的背景应该是不同的(例如,红色和绿色)。这就像一个相图,显示边界线上方和下方的两个不同阶段。是否可以在Python中使用matplotlib?我的代码是

#!/usr/bin/env python

import numpy as np
import pylab as pl
import matplotlib.pyplot as plt

# Use numpy to load the data contained in the file
# 'data.txt' into a 2-D array called data
data = np.loadtxt('data.txt')
# plot the first column as x, and second column as y
x=data[:,0]
y=data[:,1]
pl.plot(x,y, '-r')
pl.xlabel('x')
pl.ylabel('y')
pl.show()

“data.txt”文件包含:

0 0
1 1
2 4
3 9
4 16
5 25
6 36
7 49
8 64
9 81

所以它应该画出一条抛物线。
可能有一个重复的here。然而,这在我的情况下似乎不起作用。
此外,我想在不同颜色的补丁中间输入文本。
所以我的plot应该是这样的:

11dmarpk

11dmarpk1#

是的,这可以使用matplotlib的fill_between来实现。您可以简单地使用plt.fill_between(x,y,color="whatever")填充行下方。为了更完整,您可以使用plt.fill_between(x,0,y,color="whatever")设置填充的下限
要填充曲线上方的整个区域,可以使用plt.fill_between(x,y,plt.ylim()[1],color="whatever")
下面是一些演示代码,可以填充曲线的上下部分:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0,9,10)
y = x ** 2
plt.plot(x,y,"b-")
plt.fill_between(x,y,color="red")
maxy = plt.ylim()[1]
plt.fill_between(x,y,maxy,color="green")
plt.show()

你可以随意设置x和y。
希望这对你有帮助!
编辑:你可以用matplotlib的文本添加文本。你需要指定坐标,但你可以这样做

xtextplace = x[7]
ytextplace = y[7] / 2
plt.text(xtextplace,ytextplace,"Some Text")

我会这样做

xcoord = x[int((x.size/3)*2)]
ycoord = y[int((x.size/3)*2)] / 2
plt.text(xcoord,ycoord,"Text")

这将使文本显示在沿x轴沿着方向的2/3处,并在该点处显示在曲线下方的1/2处。

6yoyoihd

6yoyoihd2#

我对你的代码做了一些修改。下面的代码工作正常(使用相同的“data.txt”)
Python 3版本:

#!/usr/bin/python

import numpy as np
import matplotlib.pyplot as plt

data = np.loadtxt('data.txt')
x=data[:,0]
y=data[:,1]
(ax1, ax2) = plt.subplots(sharex=True, sharey=True)
ax2.fill_between(x, y, facecolor='green')
ax2.fill_between(x, y, plt.ylim()[1], facecolor='red')
plt.show()

输出量:

相关问题