[英]Coloring areas of a plot based on conditions
我有以下代碼
import os
import pandas as pd
import seaborn as sns
from matplotlib import pyplot as plt
import numpy as np
d1 = {'col1' : np.random.rand(5), 'col2' : ['2', '2', '1', '1', '3']}
dt1 = pd.DataFrame(data=d1)
sns.set_style("whitegrid")
p = sns.lineplot(data=dt1['col1'])
p.set_xticks(range(5))
plt.show()
簡單來說
我得到圖片:
我想根據col2
中給出的整數為網格賦予特定的顏色。 例如,如果我在col2
的第一個 position 中有 integer 2
,我想用黃色為網格間隔[0,1]
着色。
更多信息
你可以看到我有一個 DataFrame 有兩列:
舉個例子,索引dt1.iloc[1,0]
處 col1 中的時間測量受到dt1.iloc[1,1]
中包含的 integer 描述的事件的影響。 我想直觀地顯示col2
中的事件描述的條件,以便更好地了解它對col1
中報告的測量值的影響。
也許我想更改網格顏色的行 plot 不是最好的工具,所以我也願意接受其他建議。
import pandas as pd
import numpy as np
n = 20 # number of records
rng = np.random.default_rng(seed=42)
condition = rng.integers(1, 4, n)
measures = condition * rng.random(n)
df = pd.DataFrame({'col1' : measures, 'col2' : condition.astype(str)})
df.rename_axis('index', inplace=True)
我們可以在一個布局中將 2 個圖與附加參數ax
結合起來:
sns.set_style("whitegrid")
fig, ax = plt.subplots(1,1,figsize=(15,5))
sns.lineplot(data=df, x='index', y='col1', linestyle='--', color='grey', ax=ax)
sns.scatterplot(data=df, x='index', y='col1', hue='col2', palette='tab10', s=150, ax=ax)
ax.set_xticks(df.index)
plt.show()
作為一個選項,我們可以使用plotly
。 IMO 條形圖似乎非常相關:
import plotly.express as px
colormap = {'1':'DodgerBlue','2':'YellowGreen','3':'DarkOrange'}
px.bar(df, df.index, 'col1', 'col2', color_discrete_map=colormap)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.