Python 使用matplotlib和pandas为绘图上的多条线指定颜色

Python 使用matplotlib和pandas为绘图上的多条线指定颜色,python,pandas,matplotlib,colors,visualization,Python,Pandas,Matplotlib,Colors,Visualization,我有一个类似于上面问题中的数据框,但它有大约8个股票代码。我已经定义了一个名为“颜色”的颜色列表,它与股票代码相对应,但当我这样做时: df.groupby('ticker')['adj_close'].plot(color=colors) 每个股票代码的绘图上的所有线条都是相同的颜色(即“颜色”列表中的第一种颜色) 我想知道如何从“颜色”列表中指定每个股票代码对应的颜色行 提前谢谢 pandas.groupby不是必需的,因为您没有聚合计算,例如mean 不要使用.groupby,而是与h

我有一个类似于上面问题中的数据框,但它有大约8个股票代码。我已经定义了一个名为“颜色”的颜色列表,它与股票代码相对应,但当我这样做时:

df.groupby('ticker')['adj_close'].plot(color=colors)
每个股票代码的绘图上的所有线条都是相同的颜色(即“颜色”列表中的第一种颜色)

我想知道如何从“颜色”列表中指定每个股票代码对应的颜色行

提前谢谢

  • pandas.groupby
    不是必需的,因为您没有聚合计算,例如
    mean
  • 不要使用
    .groupby
    ,而是与
    hue='ticker'
    • Seaborn是一个基于matplotlib的Python数据可视化库。它提供了一个高级界面,用于绘制有吸引力和信息丰富的统计图形
    • 此绘图使用的是
      husl
    • 有关
      husl
      调色板的其他选项,请访问
选择1
  • 根据唯一的
    'ticker'
    值的数量映射颜色
将熊猫作为pd导入
将matplotlib.pyplot作为plt导入
导入seaborn作为sns
将pandas_datareader.data作为web导入以获取股票数据
#获取测试股票数据
股票代码=['msft','aapl','twtr','intc','tsm','goog','amzn','fb','nvda']
df_list=list()
对于自动售检票机中的自动售检票机:
df=web.DataReader(股票代码,数据来源:雅虎,起始日期:2019-01-31,结束日期:2020-07-21)
df['ticker']=股票代码
df_list.append(df)
df=pd.concat(df_列表).reset_索引()
#基于ticker的所有唯一值创建颜色映射
ticker=df.ticker.unique()
colors=sns.color_调色板('husl',n_colors=len(ticker))#获取大量颜色
cmap=dict(zip(股票代码,颜色))#将值压缩为颜色
#密谋
plt.图(figsize=(16,10))
sns.lineplot(x='Date',y='adj_close',hue='ticker',data=df,palete=cmap)

选择2
  • 使用特定的颜色
colors=['r','b','g','y','orange','purple','k','m','w']
plt.图(figsize=(16,10))
sns.lineplot(x='Date',y='Adj Close',hue='ticker',data=df,palete=colors)

df.head()
|日期|高|低|开|关|音量|调整关闭|股票行情|
|---:|:--------------------|-------:|-------:|-------:|--------:|------------:|------------:|:---------|
|0 | 2019-01-31 00:00:00 | 105.22 | 103.18 | 103.8 | 104.43 | 5.56364e+07 | 102.343 | msft|
|1 | 2019-02-01 00:00:00 | 104.1 | 102.35 | 103.78 | 102.78 | 3.55357e+07 | 100.726 | msft|
|2 | 2019-02-04 00:00:00 | 105.8 | 102.77 | 102.87 | 105.74 | 3.13151e+07 | 103.627 | msft|
|3 | 2019-02-05 00:00:00 | 107.27 | 105.96 | 106.06 | 107.22 | 2.73254e+07 | 105.077 | msft|
|4 | 2019-02-06 00:00:00 | 107 | 105.53 | 107 | 106.03 | 2.06098e+07 | 103.911 | msft|
df.tail()
|日期|高|低|开|关|音量|调整关闭|股票行情|
|-----:|:--------------------|-------:|-------:|-------:|--------:|------------:|------------:|:---------|
|3334 | 2020-07-15 00:00:00 | 417.32 | 402.23 | 416.57 | 409.09 | 1.00996e+07 | 409.09 | nvda|
|3335 | 2020-07-16 00:00:00 | 408.27 | 395.82 | 400.6 | 405.39 | 8.6241e+06 | 405.39 | nvda|
|3336 | 2020-07-17 00:00:00 | 409.94 | 403.51 | 409.02 | 408.06 | 6.6571e+06 | 408.06 | nvda|
|3337 | 2020-07-20 00:00:00 | 421.25 | 406.27 | 410.97 | 420.43 | 7.1213e+06 | 420.43 | nvda|
|3338 | 2020-07-21 00:00:00 | 422.4 | 411.47 | 420.52 | 413.14 | 6.9417e+06 | 413.14 | nvda|