2017-04-26 80 views
0

绘制的分布图我有一个数据帧如下:从数据帧

Metal     Cost per m^3/$  volume/mm^3 
0 Cast Iron    5996.0    20088.253323 
1 Medium Carbon Steel  4301.0    12636.050310 
2 Alloy Steel    6490.6    9134.975311 
3 Stainless Steels  34621.0   29216.210066 
8 Titanium Alloys   76500.0   16303.954297 

我想绘制成本VS音量。 我如何绘制不同颜色的每个点,并使用金属列作为图例。

+0

请考虑[接受](http://meta.stackexchange.com/a/5235)/ upvoting一个答案,如果它是有益的 - 这也将表明,你的问题已经有了答案 – MaxU

+1

请下一次询问,提供一些示例数据框与代码,花了我5分钟重现数据框和2分钟来写答案。 – ImportanceOfBeingErnest

回答

2

您可以迭代数据帧的行并使用pyplot.scatter来绘制点。

import pandas as pd 
import matplotlib.pyplot as plt 

a = ["Cast Iron", "Medium Carbon Steel", "Alloy Steel", 
    "Stainless Steels", "Titanium Alloys"] 
b = [5996,4301, 6490,34621,76500] 
c = [ 20088.253323, 12636.050310, 9134.975311, 29216.210066,16303.954297] 

df = pd.DataFrame({"Metal":a, "cost":b, "volume":c}) 

for row in df.iterrows(): 
    plt.scatter(row[1]["cost"], row[1]["volume"], 
       c=plt.cm.jet(row[0]/float(len(df))), label=row[1]["Metal"]) 

plt.legend() 
plt.show() 

enter image description here