为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用定义的颜色图将不同颜色的线添加到熊猫图中

如何使用定义的颜色图将不同颜色的线添加到熊猫图中

哆啦的时光机 2021-10-19 15:19:29
我想在一个图表中绘制 4 个图形,其中三条线应使用特定的颜色图,而一条线应使用不在该图中的颜色。这是一个示例代码import pandas as pdimport numpy as npimport matplotlib.pyplot as pltfrom matplotlib.colors import ListedColormapimport seaborn as snsimport matplotlib.ticker as tickerplt.style.use('ggplot')data = pd.DataFrame(data=[[1, 0.0, 10],[87, 32, 161],[821, 271, 804],[246, 922, 819],[107, 785, 1697]], columns=['A', 'B', 'C'])data_cost = pd.DataFrame(index=[2001, 2002, 2003, 2004, 2005], data=[[4],[311],[671],[862], [593]], columns=['D'])my_cmap = ListedColormap(sns.color_palette("GnBu_d", 3).as_hex())ax = data.plot(colormap=my_cmap, alpha=0.8, rot=0, xticks=data.index,               linewidth=6, ylim=(-0.5, 20), ax=ax)ax = data.plot(colormap=my_cmap, rot=0, xticks=data.index, marker='s', ms=15, linewidth=6, ylim=(-0.5, 13), ax=ax)ax = data_cost.plot(color='r', rot=0, xticks=data_cost.index,                    linewidth=6, ylim=(1000, 5000), marker='s', ms=15, ax=ax)ax.set_ylabel('I', fontsize=40)ax.xaxis.set_tick_params(labelsize=40)ax.set_xlabel('Y', fontsize=40)ax.yaxis.set_tick_params(labelsize=40)box = ax.get_position()ax.set_position([box.x0, box.y0, box.width * 0.8, box.height])ax.legend(loc='center left', bbox_to_anchor=(1, 0.5), fontsize=40, prop={'size':32})ax.set_facecolor('none')plt.show()不幸的是,这似乎不起作用。如果我删除图中的斧头,它看起来会更好。但我怎样才能做到这一点?最后,我想要以下情节,其中仅读取一行:
查看完整描述

1 回答

?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

您的代码似乎存在不少问题。请在我编辑过的版本下面找到,它应该使情节与您在问题中发布的内容非常接近。我想最大的问题是ylim绘图命令中的自相矛盾的参数和数据框“数据”中缺少的索引。请注意,fontsize=40文本的增加非常不成比例,这就是我将它们注释掉的原因。如果无论如何都需要这样做,您应该尝试从那里进行试验。


import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

from matplotlib.colors import ListedColormap

import seaborn as sns

import matplotlib.ticker as ticker


fig, ax = plt.subplots()


plt.style.use('ggplot')

data = pd.DataFrame(index=[2001, 2002, 2003, 2004, 2005], data=[[1, 0.0, 10],[87, 32, 161],[821, 271, 804],[246, 922, 819],[107, 785, 1697]], columns=['A', 'B', 'C'])

data_cost = pd.DataFrame(index=[2001, 2002, 2003, 2004, 2005], data=[[4],[311],[671],[862], [593]], columns=['D'])

my_cmap = ListedColormap(sns.color_palette("GnBu_d", 3).as_hex())

##ax = data.plot(colormap=my_cmap, alpha=0.8, rot=0, xticks=data.index,

##               linewidth=6,

##               #ylim=(-0.5, 20),

##               ax=ax)

ax = data.plot(colormap=my_cmap, rot=0, xticks=data.index,

               marker='s', ms=15, linewidth=6,

               #ylim=(-0.5, 13),

               ax=ax

               )

ax = data_cost.plot(color='r', rot=0, xticks=data_cost.index,

                    linewidth=6,

                    #ylim=(1000, 5000),

                    marker='s', ms=15, ax=ax)

ax.set_ylabel('I')#, fontsize=40)

ax.xaxis.set_tick_params()#labelsize=40)

ax.set_xlabel('Y')#, fontsize=40)

ax.yaxis.set_tick_params()#labelsize=40)

box = ax.get_position()

ax.set_position([box.x0, box.y0, box.width * 0.8, box.height])

ax.legend(

    loc='center left', bbox_to_anchor=(1, 0.5),

    #fontsize=40,

    prop={'size':32})

ax.set_facecolor('none')

#plt.show()

fig.savefig('example.png', bbox_inches='tight')

最后的图是这样的:

//img1.sycdn.imooc.com//616e71ad00017ce506950436.jpg

查看完整回答
反对 回复 2021-10-19
  • 1 回答
  • 0 关注
  • 164 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号