1

カテゴリ 1 を表すために円、三角形、正方形などの幾何学的形状を使用し、カテゴリ 2 を表すために色を使用して、カテゴリごとにデータセットをプロットしたいと思います。出力には、幾何学的形状と色のさまざまな組み合わせがあり、凡例はカテゴリの属性を個別にリストします。つまり:

円 = a
三角形 = b
正方形 = c

赤=Ⅰ
緑=Ⅱ
青=Ⅲ

ソリューションを探していると、特定の色を持つ特定の幾何学的形状のソリューションのみを提供する次の投稿が見つかりました。

投稿の1つからのコードで何かを解決しようとしましたが、成功しませんでした。

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

np.random.seed(1983)
num = 10
x, y = np.random.random((2, num))
cat1 = np.random.choice(['a', 'b', 'c'], num)
cat2 = np.random.choice(['I', 'II', 'III'], num)
df = pd.DataFrame(dict(x=x, y=y, cat1=cat1, cat2=cat2))

groups = df.groupby(['cat1', 'cat2'])

fig, ax = plt.subplots()
for name, group in groups:
ax.plot(group.x, group.y, marker='o', linestyle='', ms=12, label=name)
ax.legend()

plt.show()
4

1 に答える 1

2

このコードブロックを試すことができます

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

#Create mapping dictionary that you want
marker_dict = {'a':'o','b':'^','c':'s'}
color_dict = {'I':'red', 'II':'green', 'III':'blue'}

np.random.seed(1983)
num = 10
x, y = np.random.random((2, num))
cat1 = np.random.choice(['a', 'b', 'c'], num)
cat2 = np.random.choice(['I', 'II', 'III'], num)
df = pd.DataFrame(dict(x=x, y=y, cat1=cat1, cat2=cat2))

groups = df.groupby(['cat1', 'cat2'])

fig, ax = plt.subplots()
ax.margins(0.05)
for name, group in groups:
    marker = marker_dict[name[0]]
    color = color_dict[name[1]]
    ax.plot(group.x, group.y, marker=marker, linestyle='', ms=12, label=name,color=color)
ax.legend()

plt.show()

それが役に立てば幸い。

于 2016-12-04T17:32:01.013 に答える