簡體   English   中英

在python中繪制具有不同背景顏色的曲線

[英]Plotting a curve with different background colors in python

我試圖在讀取數據文件后繪制曲線。 曲線上方和曲線下方的背景應該不同(例如,紅色和綠色)。 這就像一個相圖,顯示了邊界線上下兩個不同的相位。 可以在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

所以它應該繪制一個拋物線。

有可能重復這里 但是,這似乎不適用於我的情況。

另外,我想在不同顏色的補丁中間輸入文本。

所以我的情節應該是這樣的:

在此輸入圖像描述

是的,這可以使用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。

我對你的代碼做了一些修改。 下面的代碼工作正常(使用相同的“data.txt”)

Python3版本:

#!/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()

輸出:

在此輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM