我想要一个熊猫数据的猫,其中包含一个数字值的所有时间一年。它有3列:小时、工作日和价值。我的情节是这样的:
cat_weekdayhour = plt.figure(figsize=(12,12))
cat_weekdayhour = sns.set_context("paper")
cat_weekdayhour = sns.set(style="darkgrid", font_scale=.6)
weekdayhour.shape
cat_weekdayhour = sns.catplot(x="Weekday", y="Value", hue="Hour", kind="swarm", palette="coolwarm", data=dataframe)
这给了我以下的情节,但我不喜欢一天中的早期时间(如早上0-4点)是非常蓝色的,然后最后几个小时(晚上8-11分钟)是红色的。而不是,我想把的红色调到白天的,然后让整晚都是蓝色的。这能办到吗?谢谢。
发布于 2018-12-07 21:39:29
创造你自己的托盘,结合“冷却温暖”和它受人尊敬的托盘。我有一个较旧版本的seaborn
,所以我将使用swarmplot来说明
样本数据
import seaborn as sns
import numpy as np
import pandas as pd
n = 1000
np.random.seed(123)
df = pd.DataFrame({'Weekday': ['Friday']*n,
'Hour': np.random.randint(0,24,n),
'Value': np.random.randint(40,150,n)})
冷暖调色板
sns.swarmplot(x="Weekday", y="Value", hue="Hour", palette="coolwarm", data=df)
定制调色板
# 24 hours so split evenly between the two
mypal = sns.color_palette("coolwarm", 12) + sns.color_palette("coolwarm_r", 12)
sns.swarmplot(x="Weekday", y="Value", hue="Hour", palette=mypal, data=df)
发布于 2018-12-07 21:57:40
一种方法是创建一个新的彩色地图,我们将其命名为"cycliccoolwarm"
,它包含原始的颜色映射和反转的颜色映射。然后,使用这个新的颜色地图是一样容易的任何其他现有的彩色地图。
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap
import seaborn as sns
import numpy as np
import pandas as pd
df = pd.DataFrame({"Day" : np.repeat(np.array(list("1234567")),24*40 ),
"Hour" : np.tile(np.arange(0,24), 7*40).astype(int),
"Value" : np.random.rand(7*24*40)*180})
df['Hour'] = df['Hour'].apply('{:02d}:00'.format)
cmap_orig = plt.get_cmap("coolwarm")
colors = cmap_orig(np.concatenate((np.linspace(0,1,128), np.linspace(1,0,128))))
cmap = ListedColormap(colors)
plt.cm.register_cmap("cycliccoolwarm", cmap=cmap)
g = sns.catplot(x="Day", y="Value", hue="Hour", kind="swarm", palette="cycliccoolwarm", data=df)
plt.show()
发布于 2018-12-07 21:03:15
您正在使用dataframe中的Hour
列作为着色源。相反,您可以引入一个新列,该列包含从小时到12:00的值:
dataframe['Color'] = -abs(dataframe['Hour'] - 12)
所以12:00变成0,24:00变成-12。6:00和6:00将变成-6。这样,中午将以最高值(红色→0)表示,而午夜将以最低值(蓝色→-12)表示。
https://stackoverflow.com/questions/53676708
复制相似问题