【发布时间】:2020-02-13 19:45:02
【问题描述】:
我在 Excel 工作表上为两条曲线设置了一组 x,y 值。
使用xlrd 模块,我已经能够将它们绘制如下:
问题:
- 如何使用不同的填充颜色对三个区域进行着色?曾尝试使用
fill_between,但由于不知道如何关联 x 轴和 y 轴而失败。心目中的结局如下图。
这是我的代码:
import xlrd
import numpy as np
import matplotlib.pyplot as plt
workbook = xlrd.open_workbook('data.xls')
sheet = workbook.sheet_by_name('p1')
rowcount = sheet.nrows
colcount = sheet.ncols
result_data_p1 =[]
for row in range(1, rowcount):
row_data = []
for column in range(0, colcount):
data = sheet.cell_value(row, column)
row_data.append(data)
#print(row_data)
result_data_p1.append(row_data)
sheet = workbook.sheet_by_name('p2')
rowcount = sheet.nrows
colcount = sheet.ncols
result_data_p2 =[]
for row in range(1, rowcount):
row_data = []
for column in range(0, colcount):
data = sheet.cell_value(row, column)
row_data.append(data)
result_data_p2.append(row_data)
x1 = []
y1 = []
for i,k in result_data_p1:
cx1,cy1 = i,k
x1.append(cx1)
y1.append(cy1)
x2 = []
y2 = []
for m,n in result_data_p2:
cx2,cy2 = m,n
x2.append(cx2)
y2.append(cy2)
plt.subplot(1,1,1)
plt.yscale('log')
plt.plot(x1, y1, label = "Warm", color = 'red')
plt.plot(x2, y2, label = "Blue", color = 'blue')
plt.xlabel('Color Temperature (K)')
plt.ylabel('Illuminance (lm)')
plt.title('Kruithof Curve')
plt.legend()
plt.xlim(xmin=2000,xmax=7000)
plt.ylim(ymin=10,ymax=50000)
plt.show()
如果有的话,请指导或引出其他参考资料。
谢谢。
【问题讨论】:
-
您可以从
plt.fill_between(x1, y1, 50000, color="#FFAA00")和plt.fill_between(x2, y2, 0, color="#0000CC")开始。关于颜色褪色,如果不使用数百个带有 alpha 通道的fill_between以便它们的颜色建立,不知道该怎么做。
标签: python matplotlib