首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在matplotlib上编一个传奇故事?

如何在matplotlib上编一个传奇故事?
EN

Stack Overflow用户
提问于 2017-04-01 15:03:26
回答 1查看 3.6K关注 0票数 0

我在matplotlib上绘制了一个图表,并试图创建一个传奇。如何使matplotlib使用用于区分数据类型的颜色标记创建自己的图例?

我的数据是从csv文件中读取的,该文件包含每种形状的标签。

我的代码如下所示:

代码语言:javascript
复制
data_df = pd.DataFrame.from_csv("AllMixedShapes2.csv")
    X1 = np.array(data_df[features2].values)
    y1 = np.array(data_df[features3].values)

    plt.scatter(X1[:, 0],y1, c=y, cmap=plt.cm.Paired)
    plt.axis([0, 17, 0, 200])
    plt.ylabel("Maximum Angle (Degrees)")
    plt.xlabel("Number Of Sides")
    plt.title('Original 450 Test Shapes')

    plt.legend()
    plt.show()

我试过这样做:

代码语言:javascript
复制
handles, labels = ax.get_legend_handles_labels()
ax.legend(handles, labels)

但是我不断地发现这个错误:

代码语言:javascript
复制
    handles, labels = ax.get_legend_handles_labels()
UnboundLocalError: local variable 'ax' referenced before assignment

编辑:

我试过这个:

代码语言:javascript
复制
features_of_labels = ["Circle", "Equilateral Triangle", "Right Angle Triangle",
                     "Obtuse Triangle", "Acute Triangle", "Square", "Rectangle",
                     "Parallelogram", "Seal"]

data_df = pd.DataFrame.from_csv("AllMixedShapes2.csv")
X1 = np.array(data_df[features2].values)
y1 = np.array(data_df[features3].values)
l = np.array(data_df[features_of_labels].values)

但我得到了以下错误: KeyError:“圆圈‘等边三角形’‘直角三角形’‘钝三角’\n‘急性三角形’方形‘矩形’平行四边形‘’封条‘不在索引中”

但是,如果我将features_of_labels更改为headerheader = ["Label"],它会正常工作,但会打印出每个标签,如下一张图片所示。

EN

回答 1

Stack Overflow用户

发布于 2017-04-01 16:00:18

下面是一个示例:

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


# data for example
y1 = [i for i in range(10)]
y2 = [i for i in range(10)]
colors = ['m','b','g','m','b','g','m','b','g','g']
lables = ['m','b','g','m','b','g','m','b','g','g']

plt.scatter(y1, y2,c=colors, cmap=plt.cm.Paired)

# Match colors and labels,remove duplicates
colors_lables = zip(colors, lables)
colors_lables = list(set(colors_lables))
lables = [lable for color,lable in colors_lables]

# create some patchs of colors
lables_patchs = []
for item in c_l:
    add_patch = mpatches.Patch(color=item[0], label=item[1])
    lables_patchs.append(add_patch)

plt.legend(lables_patchs, lables)

plt.show()

我们得到的照片是:

您可以匹配您的颜色和标签,删除重复,并创建一些补丁的颜色为您的传奇。

此外,您还可以为您的传奇画一些颜色点。

代码语言:javascript
复制
lables_patchs = []
for item in c_l:
    # here, use scatter()
    add_patch = plt.scatter([],[],color=item[0], label=item[1])
    lables_patchs.append(add_patch)

你会得到:

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

https://stackoverflow.com/questions/43158411

复制
相关文章

相似问题

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