import numpy as np import scipy.stats as ss import pandas as pd import matplotlib.pyplot as plt import seaborn as sns df=pd.read_excel("./tmp_apply3.xlsx") sns.set_context(font_scale=30) plt.rcParams['font.family'] = 'FangSong' plv_tb=pd.pivot_table(df,values="sale",index=["FactoryName","JiJXH"],columns=["Xian"],aggfunc=np.mean) plt.figure(figsize=(100,500)) sns.heatmap(plv_tb,vmin=plv_tb.min().min(), vmax=plv_tb.max().max(),cmap=sns.color_palette("RdYlBu",n_colors=10),annot=True, fmt='g', annot_kws={"size": 20}) plt.show()中vmin和vmax要修改成同一企业同一型号产品最小值和最大值,这样画出来热力图不是所有数据最小值和最大值,怎么修改
时间: 2024-02-09 17:13:14 浏览: 68
你可以通过修改 `vmin` 和 `vmax` 参数来设置热力图的颜色范围,使其基于同一企业同一型号产品的最小值和最大值。你可以使用 `plv_tb.loc[(factory_name, model_name)].min().min()` 和 `plv_tb.loc[(factory_name, model_name)].max().max()` 来获取同一企业同一型号产品的最小值和最大值,然后将其用作 `vmin` 和 `vmax` 参数的值,如下所示:
```python
# 假设你要以 "FactoryName" 为 "ABC","JiJXH" 为 "123" 的产品为例
factory_name = "ABC"
model_name = "123"
# 获取同一企业同一型号产品的最小值和最大值
min_val = plv_tb.loc[(factory_name, model_name)].min().min()
max_val = plv_tb.loc[(factory_name, model_name)].max().max()
# 修改 vmin 和 vmax 参数
sns.heatmap(plv_tb, vmin=min_val, vmax=max_val, cmap=sns.color_palette("RdYlBu",n_colors=10), annot=True, fmt='g', annot_kws={"size": 20})
```
这样就可以基于同一企业同一型号产品的最小值和最大值来设置热力图的颜色范围了。
相关问题
import numpy as np import scipy.stats as ss import pandas as pd import matplotlib.pyplot as plt import seaborn as sns df=pd.read_excel("./tmp_apply3.xlsx")读入后怎么取字段
你可以使用 Pandas 的 `loc` 或 `iloc` 方法来取出 DataFrame 中的特定字段。具体而言,`loc` 方法可以通过列名来取出字段,而 `iloc` 方法可以通过列的索引来取出字段。以下是两种方法的示例:
假设你要取出 `df` 中的 `sale` 和 `date` 两个字段,其中 `sale` 字段在第 2 列,`date` 字段在第 3 列,你可以这样做:
使用 `loc` 方法:
```python
# 通过列名取出字段
df_new = df.loc[:, ["sale", "date"]]
```
使用 `iloc` 方法:
```python
# 通过列的索引取出字段
df_new = df.iloc[:, [1, 2]]
```
上述代码中,`df_new` 就是取出 `df` 中的 `sale` 和 `date` 两个字段后得到的新 DataFrame。其中 `:` 表示取出所有行,`["sale", "date"]` 或 `[1, 2]` 表示取出第 2 列和第 3 列。你可以根据实际需要修改这些代码。
阅读全文