我有一个看起来像这样的数据框:
Team Minute Type
148 12 1
148 22 1
143 27 1
148 29 1
143 32 1
143 32 1
我使用Python库joypy
创建了一个Joyplot。fig, axes = joypy.joyplot(df, by="Team", column="Minute", figsize =(10,16), x_range = [0,94], linewidth = 1, colormap=plt.cm.viridis)
哪个给了我这个情节
一切都很好。
但是,颜色图现在已经毫无意义,因此我尝试根据第二个数据帧为图表着色-这是所有团队的Type
的总和。
为此,我使用以下几行创建了一个范数和一个色图:
norm = plt.Normalize(group_df["Type"].min(), group_df["Type"].max())
cmap = plt.cm.viridis
sm = matplotlib.cm.ScalarMappable(cmap=cmap, norm=norm)
ar = np.array(group_df["Type"])
Cm = cmap(norm(ar))
sm.set_array([])
这里是出现问题的地方,因为我不知道如何更改游戏手柄的颜色: 我尝试了几种方法
我试图将此Cm
作为colormap参数传递。但是,这引发了错误-typeerror 'numpy.ndarray' object is not callable
我试图在axes
和Cm
上使用for循环-
for col, ax in zip(Cm, axes):
ax.set_facecolor(col)
#ax.patch.set_facecolor(col) ##Also tried this; didn't change anything
如何更好地控制操纵杆的颜色并进行更改?任何帮助将不胜感激。
我正在读取的csv文件的示例(数据帧的实际形状为(4453,2)):
Team Minute
0 148 5
1 148 5
2 148 11
3 148 11
4 148 12
5 148 22
6 143 27
我的代码:
df = pd.read_csv(r"path")
##getting the sum for every team - total of 20 teams
group_df = df.groupby(["Team"]).size().to_frame("Count").reset_index()
df["Minute"] = pd.to_numeric(df["Minute"])
##Trying to create a colormap
norm = plt.Normalize(group_df["Count"].min(), group_df["Count"].max())
cmap = plt.cm.viridis
sm = matplotlib.cm.ScalarMappable(cmap=cmap, norm=norm)
ar = np.array(group_df["Count"])
Cm = cmap(norm(ar))
sm.set_array([])
fig, axes = joypy.joyplot(df, by="Team", column="Minute", figsize =(10,16), x_range = [0,94], colormap = plt.cm.viridis)
我想用group_df["Count"]
值中团队的总人数为图中的每个子图着色。当前,颜色图只是均匀的,并不根据总值。上面的图片是制作出来的。
答案 0 :(得分:0)
joypy从颜色图中依次填充KDE曲线的颜色。因此,为了使颜色与第三个变量匹配,您可以提供一个色图,其中包含所需顺序的颜色。可以使用<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /dir/
# Remove Trailing Dot
# ------------------------------
RewriteCond %{HTTP_HOST} ^(.+?)\.$
RewriteRule ^ https://%1%{REQUEST_URI} [L,NE,R=302]
# Multiple Slashes
# ------------------------------
RewriteCond %{THE_REQUEST} //
RewriteRule ^.*$ $0 [L,NE,R=302]
# Trailing Slash
# ------------------------------
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1/ [L,R=301]
# Force SSL
# ------------------------------
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Add WWW
# ------------------------------
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
完成。
ListedColormap