首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用Python Plotly绘制三元等值线图?

如何用Python Plotly绘制三元等值线图?
EN

Stack Overflow用户
提问于 2018-06-29 23:01:36
回答 2查看 1.7K关注 0票数 3

我正在尝试绘制一个定义在单形上的函数。显然,你可以使用do it very nicely using the Matlab API

但是我不知道如何使用Python API来做到这一点。该参考有一个名为Ternary Contour Plots in Python的部分,但它没有绘制一个数值函数,而是一个将单形映射到给定离散集的函数。

我试着模拟Matlab代码:

代码语言:javascript
复制
import plotly as py

A = [0, .2, .2, .2, 0, .6, .75, .9, 0, 1, .8, .3]
B = [1, .2, .4, .1, 0, .4, .05, 0, .8, 0, .05, .3]
C = [0, .6, .4, .7, 1, 0, .2, .1, .2, 0, .15, .4]
Z = [.1, .5, .1, .2, 1, .8, .4, 0, .1, .6, 1, .7]

trace = {
    "type": 'scatterternary',
    "carpet": 'scattercontour',
    "a": A,
    "b": B,
    "c": C,
    "z": Z
}

layout = {
    'title': 'Simple Ternary Contour Plot with Python'
}

figure = dict(data=[trace], layout=layout)
py.offline.plot(figure, validate=False)

但我得到的是这个图:

EN

回答 2

Stack Overflow用户

发布于 2018-11-08 01:34:33

如果有人仍然感兴趣,here是一本Jupyter Notebook,看看如何生成Plotly三元等高线图。

票数 1
EN

Stack Overflow用户

发布于 2018-07-02 23:26:58

如果您可以生成要按任意比例绘制其等高线的数据,则可以采用一种解决方法。在这种情况下,您可以在网格上生成(x,y)数据,将它们映射到重心坐标,并计算值z。然后,您可以使用非三元图,如等高线或曲面。

下面是一个绘制狄利克雷分布密度函数的例子:

代码语言:javascript
复制
import plotly as py
import plotly.graph_objs as go
import numpy as np


def compute_in_barycentric_coordinates(a, b, c):
    epsilon = 1e-6
    if 0.0 < a < 1.0 and 0.0 < b < 1.0 and 0.0 < c < 1.0 and abs(a + b + c - 1.0) < epsilon:
        return pow(a, 2) * pow(b, 1.5) * pow(c, 1.8)
    return None


x_data = np.linspace(0, 1, 101)
y_data = np.linspace(0, 1, 101)
z_data = []
f = 1.0 / pow(3.0, 0.5)
for y in y_data:
    next_slice = []
    for x in x_data:
        a = 1 - x - f*y
        b = x - f*y
        c = 2*f*y
        z = compute_in_barycentric_coordinates(a, b, c)
        next_slice.append(z)
    z_data.append(next_slice)


data = [
    go.Contour(
        x=x_data,
        y=y_data,
        z=z_data,
    )
]


py.offline.plot(data)

然而,这仍然是一个变通办法,所以如果你有更好的想法,我将非常高兴听到你的消息。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51104595

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档