Dav*_*son 7 graph matplotlib seaborn
我想在seaborn图表上更改水平网格线的间距,我尝试设置样式没有运气:
seaborn.set_style("whitegrid", {
"ytick.major.size": 0.1,
"ytick.minor.size": 0.05,
'grid.linestyle': '--'
})
bar(range(len(data)),data,alpha=0.5)
plot(avg_line)
Run Code Online (Sandbox Code Playgroud)
网格线自动设置我试图覆盖刻度尺寸
有什么建议?谢谢!
您可以稍后明确设置刻度线位置,它将在这些位置绘制网格.
要做到这一点,最巧妙的方法是使用一个MultpleLocator从matplotlib.ticker模块.
例如:
import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
sns.set_style("whitegrid", {'grid.linestyle': '--'})
fig,ax = plt.subplots()
ax.bar(np.arange(0,50,1),np.random.rand(50)*0.016-0.004,alpha=0.5)
ax.yaxis.set_major_locator(ticker.MultipleLocator(0.005))
plt.show()
Run Code Online (Sandbox Code Playgroud)
OP 询问修改 Seaborn 中的刻度距离。
如果您在 Seaborn 中工作并且使用返回 Axes 对象的绘图功能,那么您可以像使用 matplotlib 中的任何其他 Axes 对象一样使用它。例如:
import matplotlib.pyplot as plt
import seaborn as sns
import statsmodels.api as sm
from matplotlib.ticker import MultipleLocator
df = sm.datasets.get_rdataset("Guerry", "HistData").data
ax = sns.scatterplot('Literacy', 'Lottery', data=df)
ax.yaxis.set_major_locator(MultipleLocator(10))
ax.xaxis.set_major_locator(MultipleLocator(10))
plt.show()
Run Code Online (Sandbox Code Playgroud)
如果您正在使用涉及 FacetGrid 对象的 Seaborn 进程之一,您将看到关于如何修改刻度线而不手动设置它们的宝贵帮助。您已经从 FacetGrid.axes 内的 numpy 数组中挖掘出 Axes 对象。
import matplotlib.pyplot as plt
import seaborn as sns
from matplotlib.ticker import MultipleLocator
tips = sns.load_dataset("tips")
g = sns.lmplot(x="total_bill", y="tip", hue="smoker", data=tips, )
g.axes[0][0].yaxis.set_major_locator(MultipleLocator(3))
Run Code Online (Sandbox Code Playgroud)
请注意所需的双下标。g 是一个 FacetGrid 对象,它保存了一个 dtype=object 的二维 numpy 数组,其条目是 matplotlib AxesSubplot 对象。
如果您正在使用具有多个轴的 FacetGrid,则必须提取和修改每个轴。
| 归档时间: |
|
| 查看次数: |
5258 次 |
| 最近记录: |