这是我的第一篇文章,应该很简单。我必须做一个练习,其中我有一个带有几个变量的数据框,我必须生成一个散点图,在y轴上绘制“价格”,在x轴上绘制“权重”,并根据“优先级”(从1到10)将特定的颜色模式应用于点。
要应用的定义颜色为:
`colors=["navy","lawngreen","red","green","purple","steelblue","orange","darkred","yellow","chocolate"]
”
所以“Priority=1”应该是colors=“navy”,“Priority=2”应该是colors=“lawngreen”,等等
因此我尝试做以下几件事:
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
df=pd.read_csv("example.csv")
plt.scatter(df.Price,df.Weight,c=df.Priority,s=90)
plt.colorbar()
plt.xlabel('Price')
plt.ylabel('Weight');
``
但是我得到的颜色显然与预定义的颜色不匹配(它们只是分配给每个“Priority”变量值的ramdon颜色。我如何将定义的颜色与Priority变量值联系起来?我试图构建一个字典在plt.scatter line的c参数中使用它,但我无法得到任何正确的结果,所以可能我的公式错误。
先谢了
2条答案
按热度按时间xe55xuns1#
x1c 0d1x循环遍历
priority
的可能值,更改颜色,将标签与每个优先级/颜色对相关联,最后生成一个图例。5m1hhzi42#
首先,在你的图定义和你实际做的事情之间有一个不匹配:
一个散点图,其中我在y轴上绘制“价格”,在x轴上绘制“重量”
但是你把“价格”画在x轴上,“重量”画在y轴上:
回到你的主要问题,你已经走上了正确的道路,只要用
ListedColormap
(see doc here)从颜色列表中定义一个自定义的颜色Map表,它就应该是好的。这里是一个例子,价格,重量和优先级的假数据(这里只有3个优先级值)