Графически Dataframe с несколькими строками - PullRequest
0 голосов
/ 01 марта 2020

Я пытаюсь построить df, который выглядит следующим образом:

    200    300    400    500
0   1.2    2.2   12.3    4.2
1   2.7   13.1    9.8    3.3
2   1.8    1.5    5.1    9.8
3   3.9    3.3   12.1   12.2

Вот код, который я использую: (любезно: eyllanes c, спасибо)

import plotly


xy=px.line(self.predata,x=self.predata.columns.values,y=self.predata.index.values)
PlotlyPlot(self,xy)

def PlotlyPlot(self,tobeshown):

    raw_html = '<html><head><meta charset="utf-8" />' 
    raw_html += '<script src="https://cdn.plot.ly/plotly-latest.min.js"></script></head>' 
    raw_html += '<body>' 
    raw_html += plotly.offline.plot(tobeshown, include_plotlyjs=False, output_type='div', ) 
    raw_html += '</body></html>'
    self.graphicsView.setHtml(raw_html)

Я хочу, чтобы ось X была заголовком (200 300 400 ...), а ось Y - значениями в каждой из строк (1.2,2.2 ...) графика. Хотя это работает для 1 строки с длиной x = длина y, иначе это не работает. Когда я запускаю это, я получаю сообщение об ошибке:

All arguments should have the same length. The length of argument `y` is 243, whereas the length of previous arguments ['x'] is 143.

1 Ответ

1 голос
/ 04 марта 2020

IUU C Здесь у вас есть два варианта: al oop или конвертировать ваш df из широкого в длинный и использовать plotly.express

import pandas as pd
import plotly.graph_objs as go
import plotly.express as px

from io import StringIO
df = """   200    300    400    500
0   1.2    2.2   12.3    4.2
1   2.7   13.1    9.8    3.3
2   1.8    1.5    5.1    9.8
3   3.9    3.3   12.1   12.2"""

df = pd.read_csv(StringIO(df), delim_whitespace=True)

# as you want columns on x axis
df = df.T

l oop

fig = go.Figure()
for col in df.columns:
    fig.add_trace(go.Line(x=df.index, y=df[col]))
fig.show()

enter image description here

plotly.express

df['x'] = df.index
df_melt = pd.melt(df, id_vars="x", value_vars=df.columns[:-1])
px.line(df_melt, x="x", y="value",color="variable")

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...