我是一家医院教育部门的实习生,我的任务是将davenport图转换为可工作的交互式工具,以便教师可以在演示文稿中使用它。



我没有化学或该级方程求解的知识/背景知识。



有问题的Davenport图:
http://imgur.com/Lo87Aib(信誉不足,无法发布图片)

我已经使用了两天,并进行了很多改进,我将Flot.js与jQuery结合使用以实现几乎相同的克隆,并具有拖放数据点的功能,但是使用用户输入并更改点。

从昨天开始,我遇到了障碍,我在Google上搜索了很多东西,并访问了许多基于化学的网站,以了解该图所使用的公式。该图使用Henderson-Hasselbalch方程(Link 1)。

现在我的第一个问题是,我可以使用基于简单坐标的系统绘制数据点,即x = 7.20,y = 8,因此患者患有代谢性酸中毒。但是,我不知道如何开始建立一个也包含PCO2值(红线)的公式。

我的第二个问题是,只有在第一个问题解决后,我才可以将该公式转换为Flot.js使用的坐标系?

即使只是朝着正确的方向轻轻地抚摸我,也会极大地帮助我



编辑1 :(工作解决方案)

我设法用Mark提供的示例构建了一个工作工具。由于只需要绘制一个点,因此我将公式从各自的for循环中取出。

            $(".davenportInput").change(function() {
                // replace the , with . so Flot/math can actually use it
                var iX = $("#inputX").val().replace(',','.'); // pH
                //var iY = $("#inputY").val();  // HCO3/HCOmm
                var iA = $("#inputA").val(); // PCO2

                var HCOmm = 0.03 * iA * Math.pow(10, iX - 6.1);
                var pH = 6.1 + Math.log10(HCOmm / (0.03 * iA));

                $("#inputY").val(HCOmm.toFixed());

                updatePoint(pH, HCOmm); // Draws the x,y coordinates
            });

最佳答案

那些红线是等值线。为了绘制它们,您需要对自变量相对于方程式进行更改,使其具有足够的粒度以产生近似曲线的点。

根据wikipedia,您的Henderson–Hasselbalch血液方程为:

pH = 6.1 + log(HCO3MM/(0.03*PCO2))


pH值是x,HCO3MM是您的y,PCO2是每条曲线的常数。我猜您会想要更改x,因此求解HCO3MM的方程式将得出:

HCO3MM = 0.03*PCO2*10^(pH-6.1)


现在,让我们创建javascript函数以使用此函数生成曲线:

// minPH to maxPH is range of x-axis
// PCO2 is constant for curve
function HHIsoPleth(minPH, maxPH, PCO2){
  var isoPleth = [];
  for (var i = minPH; i < maxPH; i += 0.01){ // produce points every 0.01 pH
    HCOmm = 3 * PCO2 * Math.pow(10, i-8.1);
    isoPleth.push([i,HCOmm]);
  }
  return isoPleth;
}


现在,我们可以调用此函数来构建多个等值曲线:

var data = [];
data.push(HHIsoPleth(7.0, 7.6, 20));
data.push(HHIsoPleth(7.0, 7.6, 40));
data.push(HHIsoPleth(7.0, 7.6, 60));


flot绘制此图(例如here):

关于jquery - 转换davenport图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28345621/

10-12 04:28