gpt4 book ai didi

python - Pandas 情节 : Assign Colors

转载 作者:行者123 更新时间:2023-12-01 04:47:05 29 4
gpt4 key购买 nike

我有很多数据框正在绘制用于演示。这些都有不同的列,但都包含相同的附加列 foobar。目前,我正在使用绘制这些不同的数据框

df.plot(secondary_y='foobar')

不幸的是,由于这些数据框都有不同顺序的不同附加列,因此 foobar 的颜色总是不同的。这使得演示幻灯片变得不必要的复杂。我想在不同的图中,将 foobar 指定为粗体和黑色。

查看the docs ,唯一接近的似乎是参数 colormap - 我需要确保颜色图中的第 x 颜色始终为黑色,其中 x foobar 在数据框中的顺序。似乎比应有的更复杂,而且这也不会使它变得大胆。

有(更好的)方法吗?

最佳答案

我建议直接使用matplotlib而不是数据框绘图方法。如果 df.plot 返回它添加的艺术家而不是 Axes 对象,那么在绘制线条后更改线条的颜色也不会太糟糕。

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

def pandas_plot(ax, df, callout_key):
"""
Parameters
----------
ax : mpl.Axes
The axes to draw to

df : DataFrame
Data to plot

callout_key : str
key to highlight

"""
artists = {}

x = df.index.values
for k, v in df.iteritems():
style_kwargs = {}
if k == callout_key:
style_kwargs['c'] = 'k'
style_kwargs['lw'] = 2
ln, = ax.plot(x, v.values, **style_kwargs)
artists[k] = ln

ax.legend()
ax.set_xlim(np.min(x), np.max(x))

return artists

用法:

fig, ax = plt.subplots()
ax2 = ax.twinx()

th = np.linspace(0, 2*np.pi, 1024)
df = pd.DataFrame({'cos': np.cos(th), 'sin': np.sin(th),
'foo': np.sin(th + 1), 'bar': np.cos(th +1)}, index=th)
df2 = pd.DataFrame({'cos': -np.cos(th), 'sin': -np.sin(th)}, index=th)

pandas_plot(ax, df, 'sin')
pandas_plot(ax2, df2, 'sin')

enter image description here

关于python - Pandas 情节 : Assign Colors,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29195563/

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