gpt4 book ai didi

python - 如何使用不同颜色绘制同一 Pandas Series 列的不同部分,并具有自定义索引?

转载 作者:太空宇宙 更新时间:2023-11-03 14:27:39 25 4
gpt4 key购买 nike

这是 my previous question here 的后续内容.

假设我有一个这样的系列:

testdf = pd.Series([3, 4, 2, 5, 1, 6, 10], index=['a', 'b', 'c', 'd', 'e', 'f', 'g'])

绘图时,结果如下:

testdf.plot()

Plot_1

但是,我想将前 4 个值之前的线条绘制为蓝色(默认),并将线条的其余部分绘制为红色。按照上面提到的帖子中建议的方式尝试解决方案,这是我得到的结果:

fig, ax = plt.subplots(1, 1)
testdf.plot(ax=ax,color='b')
testdf.iloc[3:].plot(ax=ax,color='r')

Plot_2

如果我没有使用自定义索引定义我的系列,我只会得到预期的结果:

testdf = pd.Series([3, 4, 2, 5, 1, 6, 10])
fig, ax = plt.subplots(1, 1)
testdf.plot(ax=ax,color='b')
testdf.iloc[3:].plot(ax=ax,color='r')

enter image description here

那我怎样才能达到预期的结果呢?

最佳答案

我想写评论,但太长了,所以写在这里。

如果您想绘制条形图(离散的),您想要实现的效果很好

import pandas as pd
import numpy as np
df = pd.Series([3, 4, 2, 5, 1, 6, 10], index=['a', 'b', 'c', 'd', 'e', 'f', 'g'])
df.plot(kind = 'bar',color=np.where(df.index<'e','b','r'))

但正如您已经注意到的那样,在线条(连续)的情况下则不然。

如果您不想设置自定义索引,可以使用:

 df = pd.Series([3, 4, 2, 5, 1, 6, 10])
cut = 4
ax = df[:cut].plot(color='b')
df[(cut-1):].plot(ax=ax, color='r')

使用自定义索引时,您应该将系列分为两部分。一个例子是这样做

df = pd.Series([3, 4, 2, 5, 1, 6, 10], index=['a', 'b', 'c', 'd', 'e', 'f', 'g'])
df1 = pd.Series(np.where(df.index<'e',df.values,np.nan), index=df.index)
df2 = pd.Series(np.where(df.index>='d',df.values,np.nan), index=df.index)
ax = df1.plot(color = 'b')
df2.plot(ax=ax,color='r')

关于python - 如何使用不同颜色绘制同一 Pandas Series 列的不同部分,并具有自定义索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47512208/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com