python数据分析基础(三)--利用matplotlib绘制散点图、条形图、直方图等

根据数据的不同和我们分析目的的不同,我们可以适用matplotlib绘制出很多图形,但是每个图形都有其特点和应用场景:

上篇博客已经讲述了如何绘制折线图,现在来学习绘制散点图,直方图和条形图

1、散点图

绘制三月份和十月份的温度变化情况

from matplotlib import pyplot as plt
import random
from matplotlib import font_manager

#因为matplotlib不支持中文
#在linux下查看支持的字体命令行:fc-list
#查看有没有中文输入:fc-list:lang=zh
#一般采用font_manager.Fontproporties(fname="中文字体所在的目录下"),windows为c://windows//Fonts
#以下为Windows下设置为中文字体,保证x轴的中文字体能显示出来
myfont= font_manager.FontProperties(fname=r"C:\\WINDOWS\\Fonts\\simsun.ttc", size=14)

#给出x轴和y轴信息,y表示三月份和十月份的温度,因为y是随机产生,所以没有规律,实际上得到的数是有规律的,是一个列表
y_3=[random.randint(20,35) for i in range(31)]
y_10=[random.randint(20,35) for i in range(31)]

x_3=range(1,32)
x_10=range(51,82)


#设置大小
plt.figure(figsize = (20,8), dpi =80)

#绘制图表,使用scatter来绘制散点图,这是和之前折线图的唯一区别
plt.scatter(x_3, y_3, label="三月份")
plt.scatter(x_10, y_10, label="十月份")

#设置x轴刻度,使x轴对应几点几分
_x = list(x_3)+list(x_10)
_xtick_labels= ["3月{}日".format(i) for i in x_3]
_xtick_labels+= ["10月{}日".format(i) for i in x_10]

#需要显示中文的地方一定要加上 fontproperties=myfont
plt.xticks(_x[::3],_xtick_labels[::3],rotation = 45, fontproperties=myfont)
#添加x轴和y轴还有标题信息
plt.xlabel("时间", fontproperties=myfont)
plt.ylabel("温度 单位(℃)", fontproperties=myfont)
plt.title("3月份和十月份的温度变化情况", fontproperties=myfont)
#展示
plt.show()

如图:
python数据分析基础(三)--利用matplotlib绘制散点图、条形图、直方图等_第1张图片

2、绘制横着的和竖着的条形图

2.1 横着的直方图


from matplotlib import pyplot as plt
import random
from matplotlib import font_manager

#因为matplotlib不支持中文
#在linux下查看支持的字体命令行:fc-list
#查看有没有中文输入:fc-list:lang=zh
#一般采用font_manager.Fontproporties(fname="中文字体所在的目录下"),windows为c://windows//Fonts
#以下为Windows下设置为中文字体,保证x轴的中文字体能显示出来
myfont= font_manager.FontProperties(fname=r"C:\\WINDOWS\\Fonts\\simsun.ttc", size=14)

a=["跑男","街舞","姐姐乘风破浪","向往的生活","偶像练习生","青春有你"]
b=[93.1,90.3,85.4,80.1,99.1,96.5]
#设置大小
plt.figure(figsize = (20,8), dpi =80)

#绘制图表,横着的条形图用bar()函数来实现
plt.bar(range(len(a)), b, width = 0.5, color="orange")


#需要显示中文的地方一定要加上 fontproperties=myfont
plt.xticks(range(len(a)),a, rotation = 45, fontproperties=myfont)
#添加x轴和y轴还有标题信息
plt.xlabel("综艺节目", fontproperties=myfont)
plt.ylabel("收视率 单位(%)", fontproperties=myfont)
plt.title("六大综艺收视率", fontproperties=myfont)
#添加网格
plt.grid(alpha =0.4)
#展示
plt.show()

如图:
python数据分析基础(三)--利用matplotlib绘制散点图、条形图、直方图等_第2张图片

2.2 竖着的条形图

from matplotlib import pyplot as plt
from matplotlib import font_manager

#因为matplotlib不支持中文
#在linux下查看支持的字体命令行:fc-list
#查看有没有中文输入:fc-list:lang=zh
#一般采用font_manager.Fontproporties(fname="中文字体所在的目录下"),windows为c://windows//Fonts
#以下为Windows下设置为中文字体,保证x轴的中文字体能显示出来
myfont= font_manager.FontProperties(fname=r"C:\\WINDOWS\\Fonts\\simsun.ttc", size=14)

a=["跑男","街舞","姐姐乘风破浪","向往的生活","偶像练习生","青春有你"]
b=[93.1,90.3,85.4,80.1,99.1,96.5]
#设置大小
plt.figure(figsize = (20,8), dpi =80)

#绘制图表,竖着的条形图用barh()函数来实现
plt.barh(range(len(a)), b, height = 0.5, color="cyan")


#需要显示中文的地方一定要加上 fontproperties=myfont
plt.yticks(range(len(a)),a, rotation = 45, fontproperties=myfont)
#添加x轴和y轴还有标题信息
plt.xlabel("综艺节目", fontproperties=myfont)
plt.ylabel("收视率 单位(%)", fontproperties=myfont)
plt.title("六大综艺收视率", fontproperties=myfont)
#添加网格
plt.grid(alpha =0.4)
#展示
plt.show()

如图:
python数据分析基础(三)--利用matplotlib绘制散点图、条形图、直方图等_第3张图片

2.3 多个条形图

1)14、15、16号这三天每一天这四部综艺的收视率对比

from matplotlib import pyplot as plt
from matplotlib import font_manager

#因为matplotlib不支持中文
#在linux下查看支持的字体命令行:fc-list
#查看有没有中文输入:fc-list:lang=zh
#一般采用font_manager.Fontproporties(fname="中文字体所在的目录下"),windows为c://windows//Fonts
#以下为Windows下设置为中文字体,保证x轴的中文字体能显示出来
myfont= font_manager.FontProperties(fname=r"C:\\WINDOWS\\Fonts\\simsun.ttc", size=14)

a=["跑男","街舞","姐姐乘风破浪","青你"]
b_14=[93.1,90.3,85.4,87]
b_15=[93.1,90.3,85.4,67]
b_16=[93.1,90.3,85.4,76]

x_1= range(len(a))
x_2=range((len(a)+3), (len(a)+len(a)+3))
x_3=range((len(a)+len(a)+6), (len(a)+len(a)+6+len(a)))

#设置大小
plt.figure(figsize = (20,8), dpi =80)

#绘制图表,竖着的条形图用barh()函数来实现
plt.bar(x_1, b_14, width = 0.9, label = "14号", color="cyan")
plt.bar(x_2, b_15, width = 0.9, label = "15号", color="orange")
plt.bar(x_3, b_16, width = 0.9, label = "16号", color="red")

plt.legend(prop = myfont, loc = 0)
#需要显示中文的地方一定要加上 fontproperties=myfont
_x=list(x_1)+list(x_2)+list(x_3)
for i in range(len(a)-1):
    a+=a  
plt.xticks(_x ,a, rotation = 45, fontproperties=myfont)
#添加x轴和y轴还有标题信息
plt.xlabel("综艺节目", fontproperties=myfont)
plt.ylabel("收视率 单位(%)", fontproperties=myfont)
plt.title("六大综艺收视率", fontproperties=myfont)
#添加网格
plt.grid(alpha =0.4)
#展示
plt.show()

如图:
python数据分析基础(三)--利用matplotlib绘制散点图、条形图、直方图等_第4张图片
2) 四部综艺中每一部在14、15、16日的收视率对比

from matplotlib import pyplot as plt
from matplotlib import font_manager

#因为matplotlib不支持中文
#在linux下查看支持的字体命令行:fc-list
#查看有没有中文输入:fc-list:lang=zh
#一般采用font_manager.Fontproporties(fname="中文字体所在的目录下"),windows为c://windows//Fonts
#以下为Windows下设置为中文字体,保证x轴的中文字体能显示出来
myfont= font_manager.FontProperties(fname=r"C:\\WINDOWS\\Fonts\\simsun.ttc", size=14)

a=["跑男","街舞","姐姐乘风破浪","青你"]
b_14=[93.1,90.3,85.4,87]
b_15=[93.7,90.3,85.4,67]
b_16=[92.1,90.3,85.4,76]

barwidth = 0.2

x_1= range(len(a))
x_2= [i+barwidth for i in x_1]
x_3= [i+barwidth for i in x_2]

#设置大小
plt.figure(figsize = (20,8), dpi =80)

#绘制图表,竖着的条形图用barh()函数来实现
plt.bar(x_1, b_14, width = barwidth, label = "14号", color="cyan")
plt.bar(x_2, b_15, width = barwidth, label = "15号", color="orange")
plt.bar(x_3, b_16, width = barwidth, label = "16号", color="red")

plt.legend(prop = myfont, loc = 0)
#需要显示中文的地方一定要加上 fontproperties=myfont
plt.xticks(x_2 ,a, rotation = 45, fontproperties=myfont)
#添加x轴和y轴还有标题信息
plt.xlabel("综艺节目", fontproperties=myfont)
plt.ylabel("收视率 单位(%)", fontproperties=myfont)
plt.title("六大综艺收视率", fontproperties=myfont)
#添加网格
plt.grid(alpha =0.4)
#展示
plt.show()

如图:
python数据分析基础(三)--利用matplotlib绘制散点图、条形图、直方图等_第5张图片

你可能感兴趣的:(数据可视化,python,可视化)