在Python ggplot中可以绘制多线图吗?

3 投票
2 回答
7876 浏览
提问于 2025-04-18 11:30

我想在Python的ggplot中绘制一个Pandas数据框的三列,并且这三列要有相同的索引。这样做可以吗?

谢谢

2 个回答

2

在最新版本的ggplot中,使用起来更简单了:

from ggplot import ggplot, geom_line, aes
import pandas as pd

df = pd.DataFrame({'a': range(10), 'b': range(5, 15), 'c': range(7, 17)})
df['x'] = df.index
ggplot(aes(x='x'), data=df) +\
    geom_line(aes(y='a'), color='blue') +\
    geom_line(aes(y='b'), color='red') +\
    geom_line(aes(y='c'), color='green')

在这里输入图片描述

7

我猜你想在ggplot中实现类似于matplotlib的效果。

import pandas as pd
df = pd.DataFrame({'a': range(10), 'b': range(5,15), 'c': range(7,17)})
df.plot()

ggplot要求数据是“长格式”的,所以你需要稍微调整一下数据格式,可以用melt这个函数。现在ggplot还不支持直接绘制索引,所以你需要把索引变成一列数据。

from ggplot import ggplot, geom_line, aes
import pandas as pd
df = pd.DataFrame({'a': range(10), 'b': range(5,15), 'c': range(7,17)})

df['x'] = df.index
df = pd.melt(df, id_vars='x')

ggplot(aes(x='x', y='value', color='variable'), df) + \
      geom_line()

撰写回答