如何绘出一个x值有多个y值的线图?

2024-09-30 14:31:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用jupyter noterbook+绘图,基于我按日期和ID分组的数据

数据帧如下所示:

DataFrame

我已经在matplotlib中尝试过了,但是我也不知道。在

我想要的是一个图表,x=hour列,y表示计数。 例如:

Hour 0: x[0] = [2622, 48, 374, 210, 305, 1427, 83, 12]

Hour 1: x[1] = [2920, 25, 357, 140, 283, 79, 14, 53]

... 

with x = [0, 1, 2, ..., 23]

这意味着每个x都有很多y值。我怎么才能把它绘成情节呢? 我必须做尺寸缩小吗?如果是,怎么办?在

提前感谢您的帮助!在


Tags: 数据id绘图matplotlib尺寸with图表jupyter
2条回答

此建议与您的数据结构100%不匹配。但如果这是你想要的,我们稍后再处理。在


你可以通过构建一个有多个轨迹的图形来达到你想要的效果。如果您希望数据点有点抖动以避免重叠,可以使用go.Box()来获得:

绘图:

enter image description here

完整代码:

这是设置在一个离线的Jupyter笔记本上工作。绘图图形直接在笔记本中创建。在

# imports
import plotly
from plotly import tools
from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot
import pandas as pd
import numpy as np
import plotly.plotly as py
import plotly.graph_objs as go

# setup
init_notebook_mode(connected=True)
np.random.seed(123)

# dataframe
df = pd.DataFrame({'x0':[2622, 48, 374, 210, 305, 1427, 83, 12],
                    'x1':[2920, 25, 357, 140, 283, 79, 14, 53]})

# build traces for each x
traces = {}
for col in df.columns:
    traces['trace_' + col] = go.Box(name = col, y=df[col],
                                    boxpoints = 'all',
                                    pointpos = 0,
                                    marker = dict(color = 'rgb(84, 173, 39)'),
                                    line = dict(color = 'rgba(0,0,0,0)'),
                                    fillcolor = 'rgba(0,0,0,0)')
# convert data to form required by plotly
data = list(traces.values())

# build figure
fig = go.Figure(data, layout)

# plot figure
iplot(fig)
  • 对于给定的计数,确定横坐标
  • count是长度为81D array
  • 因此,创建8个相同的横坐标并标记它们的数据点
  • 这里只是一个要点,不需要使用绘图

下面我只使用你给出的两个x值,剩下的可以用for循环

import numpy as np
import matplotlib.pyplot as plt

y1 = [2622, 48, 374, 210, 305, 1427, 83, 12]
x1 = 0*np.ones(8)

y2 = [2920, 25, 357, 140, 283, 79, 14, 53]
x2 = 1*np.ones(8)

plt.scatter(x1, y1)
plt.scatter(x2, y2)
plt.show()

相应的循环代码如下

^{pr2}$

Graph

enter image description here

整个dataframe只需更换

  • range(2)作者range(24)

相关问题 更多 >