我有一个熊猫数据框,其中有我想绘制的数据,但我想根据动物的性别改变点的颜色。我尝试了很多不同的方法来实现这个目标。首先,我试图根据df列“Sex”索引字典
figure = plt.figure(figsize=(20, 6))
axes = figure.add_subplot(1, 2, 1)
clr = {'M':'firebrick','F':'blueviolet', 'I':'beige'}
axes.scatter( data[ "Whole Weight"], data['Shucked Weight'],color=clr[str(data['Sex'])])
axes.set_ylabel( "Shucked Weight")
axes.set_xlabel( "Whole Weight")
axes.set_title("Whole Weight vs. Shucked Weight")
plt.show()
plt.close()
这给了我一堆关键错误。接下来,我尝试遍历df并根据行值手动添加列:
^{pr2}$我试着从头开始做一本字典,里面有价值:
weight_dict = pd.DataFrame(dict(whole = data['Whole Weight'], shucked = data['Shucked Weight'], sex = data['Sex'], color= some if statement that choked))
我试着用np.哪里声明,但我有3种性别选择(男性、女性和婴儿,缩写为M、F、I)
data['color'] = np.where(data.Sex == 'M', 'Firebrick', (data.Sex == 'F', 'blueviolet','beige'))
最后我得到了这样的结果:
def label_color(row):
if row['Sex'] == 'M':
return 'firebrick'
elif row['Sex'] == 'F':
return 'blueviolet'
else:
return 'beige'
data['color'] = data.apply(lambda row: label_color(row), axis=1)
但我对解决方案并不十分满意。我真的很希望第一个解决方案能在我有一个自定义词典并在调用轴.散点,但这些错误是奇怪的,不可理解。在
有没有更简单的方法来解决这种疯狂?在
我想你第一次尝试的时候几乎就对了。在
我会把字典应用到一个新的专栏,把性别和颜色联系起来。有点像
或者,如果你不想要一个新的列,或者字典在分散调用之间改变,你可以这样做
^{pr2}$不确定是否有更好的解决方案只使用字典,但考虑到你已经有你的数据在熊猫,我认为使用它是好的。在
相关问题 更多 >
编程相关推荐