关于sns.scatterplot()步长参数及y轴刻度异常的技术咨询
1. sns.scatterplot()是否存在步长参数?
sns.scatterplot()本身没有专门的步长参数。它是绘制散点图的函数,会直接展示数据集中所有对应的数据点,不需要步长来控制采样逻辑。- 如果要控制坐标轴刻度的步长,得借助matplotlib的相关工具(比如
ticker.MultipleLocator);如果想要减少显示的散点数量(相当于按步长筛选数据),需要先对原始数据集做采样处理。
2. 解决y轴刻度重叠及轴范围设置问题
你用plt.ylim(0,700000,100000)无效的原因是:plt.ylim()只接受前两个参数作为轴的上下限,第三个参数不会被识别。要解决刻度重叠问题,需要单独设置y轴刻度的步长,结合你已经导入的ticker模块,有两种常用方法:
方法一:用ticker.MultipleLocator指定刻度步长
修改后的代码如下:
#Scatter plot to find relationship between price and city mileage from matplotlib import ticker plt.figure(figsize=(15,12)) sns.scatterplot(data = df, x = 'city_mileage', y = 'ex_showroom_price', hue = 'body_type', palette='viridis', s = 100) plt.title("Relation between price and city mileage") plt.xticks(fontsize=13) plt.yticks(fontsize=13) plt.xlim(0,40) plt.ylim(0,700000) # 仅设置y轴上下限 # 设置y轴主刻度步长为100000 plt.gca().yaxis.set_major_locator(ticker.MultipleLocator(100000)) plt.xlabel( 'city_mileage') plt.ylabel('ex_showroom_price') plt.show()
方法二:手动指定y轴刻度值
直接列出需要显示的刻度点,避免自动生成的刻度重叠:
#Scatter plot to find relationship between price and city mileage from matplotlib import ticker plt.figure(figsize=(15,12)) sns.scatterplot(data = df, x = 'city_mileage', y = 'ex_showroom_price', hue = 'body_type', palette='viridis', s = 100) plt.title("Relation between price and city mileage") plt.xticks(fontsize=13) # 手动设置y轴刻度,步长为100000 plt.yticks(ticks=[0,100000,200000,300000,400000,500000,600000,700000], fontsize=13) plt.xlim(0,40) plt.ylim(0,700000) plt.xlabel( 'city_mileage') plt.ylabel('ex_showroom_price') plt.show()
如果刻度文字还是拥挤,还可以尝试缩小y轴刻度的字体大小,或者旋转刻度文字(比如plt.yticks(rotation=45, fontsize=11))。
内容的提问来源于stack exchange,提问作者Perfect Paws
相关产品推荐
相关产品推荐

