如何制作多张图的绘图仪图?

时间:2018-06-26 19:49:42

标签: python python-2.7 plotly

我正在按照这个方向(教程)制作绘图仪表图

https://plot.ly/python/gauge-charts/)。

但是似乎只能在屏幕上创建一个图表。

您知道如何制作多个图表,这些图表在一个屏幕(一个html文件)中包含那些仪表图吗?

所以我想在一个屏幕上创建许多仪表。

非常感谢!

这是代码。

import plotly
import plotly.plotly as py
import plotly.graph_objs as go

from plotly.offline import plot


import plotly.plotly as py
import plotly.graph_objs as go

base_chart = {
    "values": [40, 10, 10, 10, 10, 10, 10],
    "labels": ["-", "0", "20", "40", "60", "80", "100"],
    "domain": {"x": [0, .48]},
    "marker": {
        "colors": [
            'rgb(255, 255, 255)',
            'rgb(255, 255, 255)',
            'rgb(255, 255, 255)',
            'rgb(255, 255, 255)',
            'rgb(255, 255, 255)',
            'rgb(255, 255, 255)',
            'rgb(255, 255, 255)'
        ],
        "line": {
            "width": 1
        }
    },
    "name": "Gauge",
    "hole": .4,
    "type": "pie",
    "direction": "clockwise",
    "rotation": 108,
    "showlegend": False,
    "hoverinfo": "none",
    "textinfo": "label",
    "textposition": "outside"
}


meter_chart = {
    "values": [50, 10, 10, 10, 10, 10],
    "labels": ["Days" + "<br>" + "haaga", "How", "Many", "Days", "Are", "Left"],
    "marker": {
        'colors': [
            'rgb(255, 255, 255)',
            'rgb(226,126,64)',
            'rgb(223,162,103)',
            'rgb(223,189,139)',
            'rgb(226,210,172)',
            'rgb(232,226,202)'

        ]
    },
    "domain": {"x": [0, 0.48]},
    "name": "Days Guage",
    "hole": .3,
    "type": "pie",
    "direction": "clockwise",
    "rotation": 90,
    "showlegend": False,
    "textinfo": "label",
    "textposition": "inside",
    "hoverinfo": "none",


}


layout = {
    'xaxis': {
        'showticklabels': False,
        'showgrid': False,
        'zeroline': False,
    },
    'yaxis': {
        'showticklabels': False,
        'showgrid': False,
        'zeroline': False,
    },
    'shapes': [
        {
            'type': 'path',
            'path': 'M 0.235 0.5 L 0.24 0.65 L 0.245 0.5 Z',
            'fillcolor': 'rgba(44, 160, 101, 0.5)',
            'line': {
                'width': 0.5
            },
            'xref': 'paper',
            'yref': 'paper'
        }
    ],
    'annotations': [
        {
            'xref': 'paper',
            'yref': 'paper',
            'x': 0.23,
            'y': 0.45,
            'text': '50',
            'showarrow': False
        }
    ]
}

# we don't want the boundary now
base_chart['marker']['line']['width'] = 0

fig = {"data": [base_chart, meter_chart],
       "layout": layout}
plot(fig, filename='gauge-meter-chart')

1 个答案:

答案 0 :(得分:0)

问题在于,刻度线是作为布局下的Converter对象生成的,这可以通过对shapex位置进行一些较小的计算来轻松实现。请参考下面的示例,其中我使用y定义列数并将形状和注释放置在正确的位置。

注意:我仅对列执行此操作,请应用逻辑并使它也对行有效,如果这样做,还请发布您的解决方案,以便将来人们参考! / strong>

请尝试以下代码,让我知道您的问题是否已解决!

for loop