而不是直接绘制,需要绘制平滑折线图python
rather than directly plotting ,need to plot smooth line chart python
我有 3 台机器的 3 个 df(Machine1/Machine2/Machine3)。每个 df 有 3 列。白班和生产。
样品 df:
Day-Shift Production Quality
Day 11-01 20 A
Night 11-01 45 A
Day 11-02 65 A
Night 11-02 12 B
Day 11-03 97 B
我的代码:
import numpy as np
import pandas as pd
from plotly.offline import iplot
import plotly.graph_objects as go
# Machine1: Create numpy arrays of values for the given quality.
b1 = np.where(df1['Quality'] == 'A', df1['Production'], None)
# Machine2: Same as above.
b2 = np.where(df2['Quality'] == 'A', df2['Production'], None)
# Machine3: Same as above.
b3 = np.where(df3['Quality'] == 'A', df3['Production'], None)
# Setup.
t = []
line = ['solid']
Quality = ['A']
t.append({'x': df1['Day-Shift'],
'y': b1,
'name': f'Machine1',
'line': {'color': 'red',
'dash': line[0]}})
t.append({'x': df2['Day-Shift'],
'y': b2,
'name': f'Machine1',
'line': {'color': 'blue',
'dash': line[0]}})
t.append({'x': df3['Day-Shift'],
'y': b3,
'name': f'Machine1',
'line': {'color': 'yellow',
'dash': line[0]}})
# Plot the graph.
layout = go.Layout(
title='Production meterage of Machine1/Machine2/Machine3 for Quality A',
template='plotly_dark',
xaxis=dict(
autorange=True
),
yaxis=dict(
autorange=True
)
)
fig = go.Figure(data=t, layout=layout)
iplot(fig)
我得到的图表:
我为所有三台机器创建了一个折线图。但是折线图看起来很乱。需要做平滑处理。我试过 gaussian_filter1d。但它对我不起作用。
我认为表示数据的最佳方式是使用直方图。我不太了解 ploty 离线模块,但您可以使用 matplotlib(轻松)完成它。
这是 matplotlib 的一些文档
https://matplotlib.org/3.1.1/api/_as_gen/matplotlib.pyplot.hist.html
还有一个例子:
https://matplotlib.org/3.1.1/gallery/statistics/hist.html
以及一个包含 1 个图表的多个数据集的示例
https://matplotlib.org/3.1.1/gallery/statistics/histogram_multihist.html
我有 3 台机器的 3 个 df(Machine1/Machine2/Machine3)。每个 df 有 3 列。白班和生产。 样品 df:
Day-Shift Production Quality
Day 11-01 20 A
Night 11-01 45 A
Day 11-02 65 A
Night 11-02 12 B
Day 11-03 97 B
我的代码:
import numpy as np
import pandas as pd
from plotly.offline import iplot
import plotly.graph_objects as go
# Machine1: Create numpy arrays of values for the given quality.
b1 = np.where(df1['Quality'] == 'A', df1['Production'], None)
# Machine2: Same as above.
b2 = np.where(df2['Quality'] == 'A', df2['Production'], None)
# Machine3: Same as above.
b3 = np.where(df3['Quality'] == 'A', df3['Production'], None)
# Setup.
t = []
line = ['solid']
Quality = ['A']
t.append({'x': df1['Day-Shift'],
'y': b1,
'name': f'Machine1',
'line': {'color': 'red',
'dash': line[0]}})
t.append({'x': df2['Day-Shift'],
'y': b2,
'name': f'Machine1',
'line': {'color': 'blue',
'dash': line[0]}})
t.append({'x': df3['Day-Shift'],
'y': b3,
'name': f'Machine1',
'line': {'color': 'yellow',
'dash': line[0]}})
# Plot the graph.
layout = go.Layout(
title='Production meterage of Machine1/Machine2/Machine3 for Quality A',
template='plotly_dark',
xaxis=dict(
autorange=True
),
yaxis=dict(
autorange=True
)
)
fig = go.Figure(data=t, layout=layout)
iplot(fig)
我得到的图表:
我为所有三台机器创建了一个折线图。但是折线图看起来很乱。需要做平滑处理。我试过 gaussian_filter1d。但它对我不起作用。
我认为表示数据的最佳方式是使用直方图。我不太了解 ploty 离线模块,但您可以使用 matplotlib(轻松)完成它。
这是 matplotlib 的一些文档 https://matplotlib.org/3.1.1/api/_as_gen/matplotlib.pyplot.hist.html
还有一个例子: https://matplotlib.org/3.1.1/gallery/statistics/hist.html
以及一个包含 1 个图表的多个数据集的示例 https://matplotlib.org/3.1.1/gallery/statistics/histogram_multihist.html