sns.heatmap(data, vmax = 10, vmin = -0.0001, cmap='Blues_r', cbar = False, square=True)中的max和min的设置有什么作用与影响,可以给出python示例吗
时间: 2023-06-14 19:05:54 浏览: 76
在 `sns.heatmap()` 函数中,`vmax` 和 `vmin` 参数可用于设置颜色映射的最大值和最小值。这些值决定了颜色的分配方式,即数据对应的颜色范围。
如果不设置 `vmax` 和 `vmin`,则会自动根据数据集中的最小值和最大值来设置颜色映射的范围。如果数据集的范围比较大,那么这种自动设置可能会使得颜色映射中颜色的变化不够明显,难以分辨。因此在这种情况下,我们可以手动设置 `vmax` 和 `vmin`。
下面是一个简单的示例:
```python
import seaborn as sns
import numpy as np
# 创建一个 10x10 的随机数据集
data = np.random.randint(0, 10, (10, 10))
# 绘制热力图,并设置最大值为 10,最小值为 0
sns.heatmap(data, vmax=10, vmin=0, cmap='Blues_r', cbar=False, square=True)
```
这个示例中,我们创建了一个 10x10 的随机数据集,然后使用 `sns.heatmap()` 函数绘制了一个热力图。我们手动设置了 `vmax` 和 `vmin` 参数,将颜色映射的最大值和最小值分别设置为 10 和 0。这样,颜色映射的范围就更加明显,数据值越大,颜色越深。
相关问题
import pandas as pd import seaborn as sns import matplotlib.pyplot as plt data = pd.read_excel(r"D:桌面/shujukuE.xlsx", sheet_name="Sheet3") ds = pd.DataFrame(data) dataset = ds.copy() data.drop(["materials", "contain H", "contain C", "contain N", "contain P", "contain O", "contain S", "contain Te", "contain Se", "contain F", "contain Cl", "contain Br", "contain I", "jili", ], axis=1, inplace=True) 首先计算出相关系数 cor = data.corr(method='pearson') print(cor) # 输出相关系数 rc = {'font.sans-serif': 'SimHei', 'axes.unicode_minus': False} sns.set(font_scale=0.4, rc=rc) # 设置字体大小 设置热力图颜色配色 colors = "YlGnBu" # 颜色配置" color = colors.split('_') for i in color: i = i.strip() print(i) sns.heatmap(cor, annot=False, # 显示相关系数的数据 center=0.5, # 居中 fmt='.2f', # 只显示两位小数 linewidth=0, # 设置每个单元格的距离 #linecolor='blue', # 设置间距线的颜色# vmax=1.0, vmin=-0.5, # 设置数值最小值和最大值 xticklabels=True, yticklabels=True, # 显示x轴和y轴 square=True, # 每个方格都是正方形 cbar=True, # 绘制颜色条 cmap=f'{i}', # 设置热力图颜色 ) plt.xticks(fontsize=6) plt.yticks(fontsize=6) plt.savefig("D:/桌面/影响因素热力图颜色{i}.png", dpi=600) # 保存图片,分辨率为600 plt.ion() # 显示图片,这个可以方便后面自动关闭 plt.show() plt.pause(0.5)这段代码中我想把得到的相关性数据保存为Excel,应该再怎么优化代码
你可以使用`to_excel`方法将相关系数数据保存为Excel文件。以下是修改后的代码示例:
```python
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
data = pd.read_excel(r"D:桌面/shujukuE.xlsx", sheet_name="Sheet3")
ds = pd.DataFrame(data)
dataset = ds.copy()
data.drop(["materials", "contain H", "contain C", "contain N", "contain P", "contain O", "contain S", "contain Te",
"contain Se", "contain F", "contain Cl", "contain Br", "contain I", "jili"], axis=1, inplace=True)
# 首先计算出相关系数
cor = data.corr(method='pearson')
print(cor) # 输出相关系数
# 保存相关系数数据为Excel文件
cor.to_excel("D:/桌面/相关系数.xlsx", sheet_name="相关系数")
rc = {'font.sans-serif': 'SimHei',
'axes.unicode_minus': False}
sns.set(font_scale=0.4, rc=rc) # 设置字体大小
# 设置热力图颜色配色
colors = "YlGnBu" # 颜色配置"
color = colors.split('_')
for i in color:
i = i.strip()
print(i)
sns.heatmap(cor,
annot=False, # 显示相关系数的数据
center=0.5, # 居中
fmt='.2f', # 只显示两位小数
linewidth=0, # 设置每个单元格的距离
#linecolor='blue', # 设置间距线的颜色#
vmax=1.0, vmin=-0.5, # 设置数值最小值和最大值
xticklabels=True, yticklabels=True, # 显示x轴和y轴
square=True, # 每个方格都是正方形
cbar=True, # 绘制颜色条
cmap=f'{i}', # 设置热力图颜色
)
plt.xticks(fontsize=6)
plt.yticks(fontsize=6)
plt.savefig(f"D:/桌面/影响因素热力图颜色{i}.png", dpi=600) # 保存图片,分辨率为600
plt.ion() # 显示图片,这个可以方便后面自动关闭
plt.show()
plt.pause(0.5)
```
在这个示例中,`cor.to_excel("D:/桌面/相关系数.xlsx", sheet_name="相关系数")`将相关系数数据保存为名为"相关系数.xlsx"的Excel文件,其中数据将保存在名为"相关系数"的工作表中。你可以根据需要调整文件路径和工作表名称。
import numpy as np import scipy.stats as ss import pandas as pd import matplotlib.pyplot as plt import seaborn as sns from seaborn import FacetGrid df=pd.read_excel("./tmp_apply2.xlsx") sns.set_context(font_scale=10) plv_tb=pd.pivot_table(df, values="sale", index=["FactoryName","JiJXH","Xian"], aggfunc=np.mean) g = FacetGrid(plv_tb, col_wrap=0, sharex=False, sharey=False, height=10, aspect=0.8) sns.heatmap(g, vmin=plv_tb.min().min(), vmax=plv_tb.max().max(), cmap=sns.color_palette("RdYlGn", n_colors=10)) plt.show()怎样按照Xian展开多行,绘制清晰色阶图,如何修改
你可以将 `Xian` 添加到 `col` 参数中,这样就可以按照 `Xian` 展开多行,然后在 `heatmap()` 函数中添加 `annot=True` 参数来显示每个单元格的值,同时可以通过 `fmt` 参数设置显示格式。例如:
```
g = FacetGrid(plv_tb, col="Xian", col_wrap=3, sharex=False, sharey=False, height=6, aspect=0.8)
sns.heatmap(g.map(sns.color_palette("RdYlGn"), "sale", annot=True, fmt=".2f", linewidths=.5, linecolor='gray', cbar=False))
plt.show()
```
这里将 `col_wrap` 设置为 3,表示每行最多展示 3 个子图;`annot=True` 表示显示每个单元格的值;`fmt=".2f"` 表示显示小数点后两位;`linewidths=.5` 和 `linecolor='gray'` 表示设置单元格之间的分割线;`cbar=False` 表示不显示颜色条。你也可以根据需要进一步修改这些参数。
阅读全文