使用matplotlib绘制散点图可计算R值但无数据点显示如何解决
问题根因
90%以上的概率是你手动设置的坐标轴显示范围没有覆盖实际数据的取值区间,所有数据点都落在了画布可视区域之外:corr()方法计算相关系数时仅会自动忽略空值,不会校验数据和你手动设置的坐标轴范围是否匹配,所以你能正常得到R值,但散点无法在画布上显示。
解决步骤
- 先打印两个变量的实际取值范围,确认数据分布:
# 打印城市续航的最小、最大值 print(cars2_1["City_Mileage_km_litre"].agg(['min','max'])) # 打印油箱容量的最小、最大值 print(cars2_1['Fuel_Tank_Capacity_litre'].agg(['min','max']))
- 优先删除你代码中手动设置坐标轴范围的两行代码,matplotlib会自动适配数据范围展示所有散点,调整后代码如下:
mc_corr=cars2_1["City_Mileage_km_litre"].corr(cars2_1['Fuel_Tank_Capacity_litre']) plt.scatter(cars2_1["City_Mileage_km_litre"],cars2_1['Fuel_Tank_Capacity_litre'],color='orange') plt.title('Mileage vs Fuel Tank Capacity') plt.xlabel("R = "+str(mc_corr)) plt.show()
- 如果你确实需要自定义坐标轴范围,根据第一步打印出的实际取值调整
xlim、ylim的参数即可,注意要给上下边界留少量冗余,避免边界上的点无法正常显示。
其他小概率排查方向
如果调整范围后仍看不到点,可以检查两列数据的类型是否为数值型:
print(cars2_1[["City_Mileage_km_litre","Fuel_Tank_Capacity_litre"]].dtypes)
如果显示为object类型,需要先做数值转换再绘图。
内容的提问来源于stack exchange,提问作者Jon
相关产品推荐
相关产品推荐

