python - 有没有办法调整pairplot()的轴限制,但不能作为单独的图?
问题描述
有没有办法调整pairplot()的轴限制,但不能作为单独的图?也许是产生更好的轴限制的设置?
我希望图的轴范围更大。我的绘图轴允许可视化所有数据,但它过于“放大”。
我的代码是:
import pandas as pd
mport matplotlib.pyplot as plt
import seaborn as sns
sns.set_style('darkgrid')
g = sns.pairplot(iris, hue = 'species', diag_kind = 'hist', palette = 'Dark2', plot_kws={"s": 20})
我的情节的链接和我想要的情节在这里: pairplot
解决方案
要更改子图,g.map(func, <parameters>)
可以使用。一个小问题是func
需要接受color
作为参数,使用plt.margins()
时报错color
。此外,map
使用x
andy
来表示行和列变量。plt.margin()
例如,您可以编写一个简单调用的虚拟函数g.map(lambda *args, **kwargs: plt.margins(x=0.2, y=0.3))
。
另一种方法是循环g.axes.flat
并调用ax.margins()
它们中的每一个。请注意,许多轴在 x 和/或 y 方向上共享。对角线的处理方式不同;由于某种原因ax.margins
需要在对角线上第二次调用。
可以设置不同颜色的直方图堆叠而不是重叠diag_kws={"multiple": "stack"}
。
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_style('darkgrid')
iris = sns.load_dataset('iris')
g = sns.pairplot(iris, hue='species', diag_kind='hist', palette='Dark2',
plot_kws={"s": 20}, diag_kws={"multiple": "stack"})
# g.map(plt.margins, x=0.2, y=0.2) # gives an error
for ax in g.axes.flat:
ax.margins(x=0.2, y=0.2)
for ax in g.diag_axes:
ax.margins(y=0.2)
plt.show()
PS:还有另一种选择,是更改rcParams
这将对代码中稍后创建的所有图产生影响:
import matplotlib as mpl
mpl.rcParams['axes.xmargin'] = 0.2
mpl.rcParams['axes.ymargin'] = 0.2
推荐阅读
- react-native - React Native Expo WebClient Facebook登录应用程序未设置错误卡住
- python - Google Classroom API:通过网站创建的成绩作业
- pandas - 带有熊猫数据框图的每小时次要网格线和每 6 小时的 mjaor 网格线
- python - Selenium 中的 Python IndexError 和 UnboundLocalError
- java - 用 Java 做一个里程计算器并卡住了
- amazon-web-services - aws cli 返回 python 对象而不是常规输出
- wpf - 未找到 Rosource myConverter
- reactjs - 我已经编写了这段代码,并且收到了一些错误。任何人都可以帮助我了解我在这段代码中缺少什么以便我进行测试吗?
- php - PHP 将 UTF-8 转换为 TeX/LaTeX 格式?
- android - 在 Android 12 设备上获取 Android 广告 ID 的特殊处理和时间表