График показывает случайную гистограмму и неверные данные каждый раз в графике Ploty - PullRequest
0 голосов
/ 12 октября 2018

Python 3.5 Plotly offline

Приведенный ниже код успешно генерирует выходные данные, однако выходные данные являются случайными и не отображают все данные оси X в виде гистограммы.

Входные данные из файла .tab (таблицакак показано ниже) вывод: построение графиков нижеприведенной таблицы в виде графика BAR

[Function group][count]


ke1           101
IO1            70
Andr1234       22
VN1            22
NAV1           20
SW1            17
DC123          16
OnOff          15
Linux          12
AD1            12
Brow1          10
QNXOS           9
OSSDK           9
DM1             7
Frm1            6
SYSINT          5
TABA1           4
Security        3
A1              3
DCM             3
Per1            2
Trace           2
Audio           1
Buildtools      1
ENV             1
Pathology       1

Когда я строю график с использованием графика, он показывает случайную полосу, и не все заголовки отображаются в столбце 1, приходящем на график.

Какое изменение кода требуется для получения всех имен оси X, и соответствующая ось Y подсчитывается в соответствии с таблицей выше?

  1. Каждый раз, когда я запускаю этот код,генерирует график случайных значений и случайный текст по оси X. Не вся текстовая метка в таблице, показанной по оси X, показана только метка 10-12. Как преодолеть эту проблему и построить правильный BAR-график с правильным значением для каждой метки таблицы.

  2. Что необходимо добавить, чтобы показать счетчик на БАР без наведения мыши.


import pandas as pd
from io import StringIO
import requests
import pandas as pd
import numpy as np
from bs4 import BeautifulSoup
from nsepy import get_history

import plotly
from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot
import plotly.graph_objs as go
init_notebook_mode(connected=True)

from datetime import date
from datetime import datetime

datalist = pd.read_table(r'D:\python\ython\xxx.tab',sep='\t')   #sep=\s+|\t+
datalistFg=pd.value_counts(datalist['Function group'].values, sort=True)
datalistRp=pd.value_counts(datalist['Responsible person'].values, sort=True)


print(datalistFg)

#graphing place
otrace1 =go.Bar(
    #x=stock_opt_pe.index
    x=datalist['Function group'],
    y=datalistFg,
    text=datalistFg,
    #xaxis-type (enumerated: “-” | “linear” | “log” | “date” | “category” )
    #xaxis-type (enumerated: “-” | “linear” | “log” | “date” | “category” )
    #name='Function Group Vx RespPerson',
    #orientation = 'v',
    #marker = dict(
        #color = 'rgba(224, 224, 224, 0.6)',
        #line = dict(
            #color = 'rgba(246, 250, 206, 1.0)',
            #color = 'rgb(60, 60, 60)',
            #width = 0)
    #)
)

otrace2 = go.Bar(
    #x=stock_opt_pe.index
    x=datalist['Responsible person'],
    y=datalistRp,
    name='RP',
    orientation = 'v',
    marker = dict(
        color = 'rgba(128, 255, 0, 0.6)',
        line = dict(
            #color = 'rgba(240, 240, 240, 1.0)',
            #color = 'rgb(204, 255, 204)',
            width = 1.5)
    )
)

odata = [otrace1]
olayout = go.Layout(
    title = "TESTING",
    xaxis=dict(
    tickangle=35,
    showticklabels=True,
    type='category',
    title='Function group',
    tickmode='linear'),
#    barmode="linear"
)
fig = dict(data=odata, layout=olayout)
#fig = dict(data=odata)
iplot(fig, filename = 'D:/python/ython/Test-{}.html'.format("Testing"))
plot(fig,show_link = True, filename = 'D:/python/ython/test_{}.html'.format("Testing"))

1 Ответ

0 голосов
/ 19 октября 2018

Это обновление, приведенное ниже, решило проблему. Только одна проблема заключается в том, что ось X показывает 1 2, 3 .... 25. Если это исправлено, чтобы метка оси X для каждого бара отображалась как Ke1, IO1, VN1 .... это решение будет завершено.

Теперь график работает правильно, за исключением меток оси X.

import matplotlib.pyplot as plt
import pandas as pd
from io import StringIO
import requests
import pandas as pd
import plotly
plotly.__version__
from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot
import plotly.graph_objs as go
init_notebook_mode(connected=True)

datalist = pd.read_table(r'D:\pon\oon\etml\106111025170_20180808062710.tab',sep='\t')   #sep=\s+|\t+

#graph plotly
otrace1 =go.Bar(
    x=datalist['Function group'].nunique(),
    y=pd.value_counts(datalist['Function group'].values,sort=True),
    text=pd.value_counts(datalist['Function group'].values,sort=True),
    textposition = 'auto',
    orientation = 'v',
    marker = dict(
        color = 'rgba(127,87,225,1.00)',
        line = dict(
            color = 'rgba(127,45,64,1.00)',
            width = 0),
    )
)

odata = [otrace1]
olayout = go.Layout(
    title = "TESTING",
    xaxis=dict(
    #tickangle=35,
    #showticklabels=True,
    #type='category',
    title='GroupName',
    titlefont=dict(
            family='Courier New, monospace',
            size=18,
            color='#ffff7f'
        ),
    tickmode='linear'),
    barmode="bar"
)
fig = dict(data=odata, layout=olayout)
#fig = dict(data=odata)
iplot(fig, filename = 'D:/pyon/ofhon/elml/Test-{}.html'.format("Testing"))
plot(fig,show_link = True, filename = 'D:/pyon/ofhon/elml/test_{}.html'.format("Testing"))
...