群落 "gradient"
Swarmplot "gradient"
我想绘制这样的群图
我可以强调具体点。但我希望所有的点都得到某种颜色图。并且特定点具有各自的颜色。
我正在尝试色调和调色板,但它不起作用。
palette = sns.light_palette("purple", reverse=False, n_colors=df[typeId].max())
ax = sns.swarmplot(x = df[typeId], ax = ax, hue = df[typeId], alpha = 0.8, size = 8)
axData = ax.get_children()
for a in axData:
if type(a) is matplotlib.collections.PathCollection:
offsets = a.get_offsets()
break
ax.scatter(offsets[index,0], offsets[index,1], marker='o', color='red', zorder=10, s=200, edgecolor = "white")
ax.text(offsets[index,0], offsets[index,1]-0.1,"Value: " + str(player[typeId]) + "\nPercentile rank: " + str("{0:.2f}".format(player[typeRank]*100)), ha = "center", color = "white", zorder = 9, fontproperties=prop_bold,fontsize=10)
似乎当没有给出 y=
时,swarmplot()
没有考虑 hue=
参数。 (当 y
是常量时,代码似乎挂起。)
解决方法是手动设置颜色:
import matplotlib.pyplot as plt
import matplotlib
import seaborn as sns
import numpy as np
type_ids = np.random.binomial(200, 0.7, 500)
ax = plt.gca()
plt.style.use("dark_background")
ax = sns.swarmplot(x=type_ids, ax=ax, size=8)
for a in ax.get_children():
if type(a) is matplotlib.collections.PathCollection:
offsets = a.get_offsets()
cmap = sns.light_palette("purple", reverse=False, as_cmap=True)
norm = plt.Normalize(vmin=offsets[:,0].min(), vmax=offsets[:,0].max())
facecolors = [cmap(norm(x)) for x, y in offsets]
a.set_color(facecolors)
break
index = 20
ax.scatter(offsets[index, 0], offsets[index, 1], marker='o', color='red', zorder=10, s=200, edgecolor="white")
ax.text(offsets[index, 0], offsets[index, 1] - 0.1, "\nPercentile rank: ...",
ha="center", color="white", zorder=9, fontsize=10)
plt.show()
我想绘制这样的群图
我可以强调具体点。但我希望所有的点都得到某种颜色图。并且特定点具有各自的颜色。 我正在尝试色调和调色板,但它不起作用。
palette = sns.light_palette("purple", reverse=False, n_colors=df[typeId].max())
ax = sns.swarmplot(x = df[typeId], ax = ax, hue = df[typeId], alpha = 0.8, size = 8)
axData = ax.get_children()
for a in axData:
if type(a) is matplotlib.collections.PathCollection:
offsets = a.get_offsets()
break
ax.scatter(offsets[index,0], offsets[index,1], marker='o', color='red', zorder=10, s=200, edgecolor = "white")
ax.text(offsets[index,0], offsets[index,1]-0.1,"Value: " + str(player[typeId]) + "\nPercentile rank: " + str("{0:.2f}".format(player[typeRank]*100)), ha = "center", color = "white", zorder = 9, fontproperties=prop_bold,fontsize=10)
似乎当没有给出 y=
时,swarmplot()
没有考虑 hue=
参数。 (当 y
是常量时,代码似乎挂起。)
解决方法是手动设置颜色:
import matplotlib.pyplot as plt
import matplotlib
import seaborn as sns
import numpy as np
type_ids = np.random.binomial(200, 0.7, 500)
ax = plt.gca()
plt.style.use("dark_background")
ax = sns.swarmplot(x=type_ids, ax=ax, size=8)
for a in ax.get_children():
if type(a) is matplotlib.collections.PathCollection:
offsets = a.get_offsets()
cmap = sns.light_palette("purple", reverse=False, as_cmap=True)
norm = plt.Normalize(vmin=offsets[:,0].min(), vmax=offsets[:,0].max())
facecolors = [cmap(norm(x)) for x, y in offsets]
a.set_color(facecolors)
break
index = 20
ax.scatter(offsets[index, 0], offsets[index, 1], marker='o', color='red', zorder=10, s=200, edgecolor="white")
ax.text(offsets[index, 0], offsets[index, 1] - 0.1, "\nPercentile rank: ...",
ha="center", color="white", zorder=9, fontsize=10)
plt.show()