#########抖动的带状图与技数图###########
##04与05
import numpy as np
import importlib as mpl
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
df=pd.read_csv('mpg_ggplot2.csv')
df.head()
df.loc[:,['cty','hwy']] #会发现有许多的横纵坐标一致的点
plt.figure(figsize=(6,6)) plt.scatter(df.cty,df.hwy); #会发现的有很多同名的点被盖住了
有两种手段可解决以上的问题,抖动图与技数图来知道同一做坐标下的点,stripplot来进行绘制 sns.stripplot() 重要的参数: jitter:抖动的幅度(及两个位置两个点位置距离的大小)0表示完全不存在的抖动
###抖动图
fig,ax =plt.subplots(figsize=(12,8),dpi=80)
###用来画抖动图的函数,sns.stripplot() 自带颜色
sns.stripplot(df.cty,df.hwy,
jitter=0.25,#抖动的幅度(0.25-0.1比较好)
size=8,
ax=ax,
linewidth=.5,
palette='tab10',
)
#装饰
#装饰图像
plt.rcParams['font.sans-serif']=['Simhei'] #显示中文,为微软雅黑
plt.xlabel('城市里程/加仑',fontsize=16)
plt.ylabel('公路里程/加仑',fontsize=16)
plt.xticks(fontsize=16) #标尺的大小
plt.yticks(fontsize=16)
plt.title('scatterplot with line ofbest',fontsize=20)
plt.show()
计数图
#处理数据
df_counts=df.groupby(['hwy','cty']).size().reset_index(name="counts")
fig,ax =plt.subplots(figsize=(12,8),dpi=80)
###用来画抖动图的函数,sns.stripplot() 自带颜色
sns.stripplot(df_counts.cty,
df_counts.hwy,
#jitter=0.25,#抖动的幅度(0.25-0.1比较好)
sizes=df_counts.counts*20,#尺寸
#linewidth=.5,
#,palette='tab10',
)
#装饰图像
plt.rcParams['font.sans-serif']=['Simhei'] #显示中文,为微软雅黑
plt.xlabel('城市里程/加仑',fontsize=16)
plt.ylabel('公路里程/加仑',fontsize=16)
plt.xticks(fontsize=16) #标尺的大小
plt.yticks(fontsize=16)
plt.title('scatterplot with line of best',fontsize=20)
plt.show()
##########小结####
#问题描述: size这个参数的值必须是标量,或者与x和y的大小相同(意思是size参数的值必须是一个固定不变的值!!!)
# 所以当size后面的值不同时,一定会出现上述报错!!
#只需要将上述代码中的size替换成sizes即可解决问题
#原文链接:https://blog.csdn.net/qq_45261963/article/details/118399120
#几个学到的知识点



