使用带有 pandas dataframe.plot 函数的 matplotlib 颜色图
using matplotlib colormap with pandas dataframe.plot function
我正在尝试将 matplotlib.colormap 对象与 pandas.plot 函数结合使用:
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.cm as cm
df = pd.DataFrame({'days':[172, 200, 400, 600]})
cmap = cm.get_cmap('RdYlGn')
df['days'].plot(kind='barh', colormap=cmap)
plt.show()
我知道我应该以某种方式告诉颜色图它被馈送的值的范围,但是当使用 pandas .plot() 函数作为例如,此 plot() 不接受 vmin/vmax 参数。
Pandas 为每一行应用一个颜色图,这意味着您为单列数据框获得相同的颜色。
要对数据框的每一行应用不同的颜色,您必须从选定的颜色图中生成颜色列表:
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.cm as cm
import numpy as np
df = pd.DataFrame({'days':[172, 200, 400, 600]})
colors = cm.RdYlGn(np.linspace(0,1,len(df)))
df['days'].plot(kind='barh', color=colors)
plt.show()
另一种方法是直接使用matplotlib。
我正在尝试将 matplotlib.colormap 对象与 pandas.plot 函数结合使用:
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.cm as cm
df = pd.DataFrame({'days':[172, 200, 400, 600]})
cmap = cm.get_cmap('RdYlGn')
df['days'].plot(kind='barh', colormap=cmap)
plt.show()
我知道我应该以某种方式告诉颜色图它被馈送的值的范围,但是当使用 pandas .plot() 函数作为例如,此 plot() 不接受 vmin/vmax 参数。
Pandas 为每一行应用一个颜色图,这意味着您为单列数据框获得相同的颜色。
要对数据框的每一行应用不同的颜色,您必须从选定的颜色图中生成颜色列表:
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.cm as cm
import numpy as np
df = pd.DataFrame({'days':[172, 200, 400, 600]})
colors = cm.RdYlGn(np.linspace(0,1,len(df)))
df['days'].plot(kind='barh', color=colors)
plt.show()
另一种方法是直接使用matplotlib。