首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要可视化python字典

需要可视化python字典
EN

Stack Overflow用户
提问于 2017-07-13 17:39:15
回答 1查看 1.5K关注 0票数 0

我正在研究一种聚类算法,它从一个导入大熊猫的excel文件中获取输入作为一个列表。该列表被划分为由k[0], k[1].....k[7]表示的类似8个浮点的数据块(索引数对应于字典中的值)。群集以字典形式表示。集群输出的一个示例是

代码语言:javascript
复制
cluster = {0: [0, 2, 4, 5, 6], 1: [1], 2: [3, 7]}

是否有一种方法可以得到一个散点图,以便用一种颜色绘制[0, 2, 4, 5, 6],用另一种颜色绘制[1],用另一种颜色绘制[3,7]。本质上,每个集群都应该用相同的颜色标记。我想知道如何将这个列表映射到颜色(最好是与聚类算法中的簇数一样多的颜色,这是事先知道的)。我在python中使用matplotlib,完全不知道如何解决这个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-13 19:58:22

您只需对每个数字列表执行以下散布操作:

代码语言:javascript
复制
import matplotlib.pyplot as plt

cluster = {0: [0, 2, 4, 5, 6], 1: [1], 2: [3, 7]}
colours = ['green', 'orange', 'red']

fig = plt.figure()
ax = fig.add_subplot(111)

for colour, (x, ys) in zip(colours, cluster.items()):
    ax.scatter([x] * len(ys), ys, c=colour, linewidth=0, s=50)

plt.show()

给予你:

为了将其扩展到使用彩色地图,可以将colours构造为:

代码语言:javascript
复制
colours = cm.rainbow(np.linspace(0, 1, len(cluster)))

例如:

代码语言:javascript
复制
import matplotlib.pyplot as plt
import matplotlib.cm as cm
import numpy as np

cluster = {0: [0, 2, 4, 5, 6], 1: [1], 2: [3, 7]}
colours = cm.rainbow(np.linspace(0, 1, len(cluster)))

fig = plt.figure()
ax = fig.add_subplot(111)

for colour, (x, ys) in zip(colours, cluster.items()):
    ax.scatter([x] * len(ys), ys, c=colour, linewidth=0, s=50)

plt.show()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45087575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档