Python:定义颜色曲线部分

时间:2017-11-13 09:15:57

标签: python matplotlib plot curve

我想复制下图: Aim

颜色渐变从蓝色变为红色,表示材质的状态。我现在可以绘制每条曲线。每行由两个点定义,然后使用pyplot(matplotlib库)简单地绘制。我也清楚知道如何计算相关值。 Current python code state
然而,可以注意到,例如对于第一图中的点9或22,该值在重叠区域处是不同的。我目前还不知道如何有效地做到这一点 我唯一的想法来自this solution。基本上,我必须将每个曲线部分转换为多边形。但它看起来非常沉重,并且在这种情况下可能不是最佳解决方案。

我主要是要求能够帮助我实现这一目标的潜在客户,或者只是更聪明地看待问题!

产生这个数字的代码:

import shelve
import matplotlib.pyplot as plt
import os

path = "C:/Users/***/Desktop/Python/PyHugo/"
d = shelve.open(os.path.join(path, 'output.db'))
pointMat = d ['curve']
d.close()

fig=plt.figure()
ax=fig.add_subplot(111)

for matID in pointMat.keys():   
    for couple in range(len(pointMat[matID])-1):
        plt.plot([pointMat[matID][couple][0][0],pointMat[matID][couple][1][0]],[pointMat[matID][couple][0][1],pointMat[matID][couple][1][1]])

plt.show()

点数存储在pointMat dictionnary中。每个区域都有一组积分。区域是特定材料。它由图1中的黑色线(540左右)表示。所以在当前的例子中有2种材料。

第一组得分由:

print matPoint[0][0]

结果:[[20,20],[0,40]]。我们在第一篇材料中询问了第一点。

编辑1:添加了代码,删除了偏离主题的问题

编辑2:我不是绘制曲线,而是将值映射到网格上(现象的离散化)。问题有太多的变化,这似乎是一个更好的主意。感谢您花时间来帮助我!

1 个答案:

答案 0 :(得分:0)

您需要使用 alpha 参数使线条变为半透明:

plt.plot([pointMat[matID][couple][0][0],
         [pointMat[matID][couple][1][0]],
         [pointMat[matID][couple][0][1],
         [pointMat[matID][couple][1][1]],
         alpha=0.7)

作为一个例子。