Python绘制频率分布直⽅图和条形图
我们平时做数据分析的时候,经常要了解数据的分布情况,这时候就需要画出频率分布直⽅图和条形图,博主采⽤的画图⼯具是python中的aborn,它的画图效果⽐matplotlib要好 [1]。
⾸先需要明确⼀下直⽅图和条形图的区别:条形图有空隙,直⽅图没有,条形图⼀般⽤于类别特征,直⽅图⼀般⽤于数字特征(连续型)[2]。
画直⽅图
def draw_distribution_histogram(nums, path, is_hist=True, is_kde=True, is_rug=Fal, \文武英杰宣言
is_vertical=Fal, is_norm_hist=Fal):
"""
bins: 设置直⽅图条形的数⽬
is_hist: 是否绘制直⽅图
is_kde: 是否绘制核密度图
is_rug: 是否绘制⽣成观测数值的⼩细条
is_vertical: 如果为True,观察值在y轴上
is_norm_hist: 如果为True,直⽅图⾼度显⽰⼀个密度⽽不是⼀个计数,如果kde设置为True,则此参数⼀定为True
"""
sns.t()#切换到sns的默认运⾏配置
sns.distplot(nums, bins=20, hist=is_hist, kde=is_kde, rug=is_rug, \
hist_kws={"color":"steelblue"}, kde_kws={"color":"purple"}, \
vertical=is_vertical, norm_hist=is_norm_hist)
#添加x轴和y轴标签
plt.xlabel("XXX")
plt.ylabel("YYY")
#添加标题
plt.title("Distribution")
plt.tight_layout()# 处理显⽰不完整的问题
plt.savefig(path, dpi=300)
x=np.random.randn(100)
path ="distribution.jpg"
draw_distribution_histogram(x, path,True,True)
画条形图/柱状图
def draw_bar_chart(nums, path):海蜇皮怎么凉拌
证明样本import pandas as pd
counter =dict(Counter(nums))
x, y =[],[]
for line in counter.items():
荞麦面怎么做x.append(line[0])
y.append(line[1])
data = pd.DataFrame({"XXX": x,"YYY": y})
_, ax = plt.subplots(figsize=(12,8))
sns.t()#切换到sns的默认运⾏配置
# palette:调⾊板,控制不同的颜⾊style
barplot = sns.barplot(x="XXX", y="YYY", data=data, palette="Set3", capsize=.2)# Blues_d, Greens_d, Set3 barplot_fig = _figure()
ax.t_title('Distribution', fontsize=24)
ax.t_xlabel("XXX")
断桥残雪歌词ax.t_ylabel("YYY")
plt.tight_layout()# 处理显⽰不完整的问题
for rect in ax.patches:# 遍历每个柱⼦对象
x_left_edge = _x()# 得到柱⼦左边缘的横坐标值
bar_width = _width()# 得到柱⼦的宽度
bar_height = _height()# 得到柱⼦的⾼度
# 设置柱⼦新宽度
x_center = x_left_edge + bar_width /2.
new_bar_width =0.1
rect.t_x(x_center-new_bar_width/2.)# 移动柱⼦左边缘的横坐标值
rect.t_width(new_bar_width)
<(x_center, bar_height,
bar_height,
ha='center', va='bottom', rotation=0, color='black', fontsize=12)
barplot_fig.savefig(path, dpi=300)
x = np.random.randint(0,2, size=100)
男性阴虱最好的治疗方法
path ="bar_chart.jpg"
draw_bar_chart(x, path)
过年买什么菜
写一篇
参考⽂献
[1]
[2]