• python数据分析008_Matplotlib绘柱图,饼图,散点图


    一.柱状图

      1.plt.bar(x,height,width,color)

    • x:记录x轴上的标签
    • height:记录每个柱形的高度
    • width:设置柱形的宽度
    • color:设置柱形的颜色,传入颜色值的列表,例如:['blue','green','red']

      2.使用plt.text( )函数把柱形的高度数据标注在了柱形的上方:    plt.text(x,y,s,ha,va)

      函数中前两个参数分别为标注数据的坐标,x和y坐标,参数s记录标注的内容,参数ha和va分别用于设置水平和垂直方向的对齐方式。

    • # 绘制柱状图
    • rects = plt.bar(a,b,width=0.3,color=['red','green','blue','cyan','yellow','gray'])
    • plt.xticks(a,fontproperties=my_font)
    • plt.yticks(range(0,41,5),range(0,41,5))
    • # 在条形图上加标注(水平居中)
    • for rect in rects:
    • height = rect.get_height()
    • plt.text(rect.get_x() + rect.get_width() / 2, height+0.3, str(height),ha="center")
    • plt.show()

    二.直方图

      1.plt.hist(data, bins, facecolor, edgecolor)

    • data:绘图用到的数据
    • height:直方图的条形数目
    • bins:设置柱形的宽度
    • facecolor:矩形的填充颜色
    • edgecolor:条形的边框颜色

    例如:

    • from matplotlib import pyplot as plt
    • from matplotlib import font_manager
    • time = [131, 116, 111, 84, 137, 115, 122, 106, 144, 109, 123, 116, 111,111, 133, 150]
    • my_font = font_manager.FontProperties(fname='/data/course_data/data_analysis/STSONG.TTF',size=10)
    • # 2)创建画布
    • plt.figure(figsize=(20, 8), dpi=100)
    • # 3)绘制直方图
    • # 设置组距
    • distance = 2
    • # 计算组数
    • group_num = int((max(time) - min(time)) / distance)
    • # 绘制直方图
    • plt.hist(time, bins=group_num)
    • # 修改x轴刻度显示
    • plt.xticks(range(min(time), max(time))[::2])
    • # 添加网格显示
    • plt.grid(linestyle="--", alpha=0.5)
    • # 添加x, y轴描述信息
    • plt.xlabel("电影时长大小",fontproperties=my_font)
    • plt.ylabel("电影的数据量",fontproperties=my_font)

    三.散点图

      1.plt.scatter(x,y,s,c,marker,alpha,linewidths)

    • x,y:数组
    • s:散点图中点的大小,可选
    • c:散点图中点的颜色,可选
    • marker:散点图的形状,可选
    • alpha:表示透明度,在 0~1 取值,可选
    • linewidths:表示线条粗细,可选

    例如:

    • import pandas as pd
    • from matplotlib import pyplot as plt
    • df = pd.read_csv('/data/course_data/data_analysis/height_weight.csv')
    • # 设置图形大小
    • plt.figure(figsize=(20,8),dpi=80)
    • # 使用scatter绘制散点图
    • plt.scatter(df['height'],df['weight'],alpha=0.5,c='red')
    • plt.show()

    四.饼图

      1.plt.pie(x, labels, autopct, shadow, startangle)

    • x:绘制用到的数据
    • Tlabels:用于设置饼图中每一个扇形外侧的显示说明文字
    • autopct:设置饼图内百分比数据,可以使用format字符串或者format function,例如’%.1f%%’指小数点后保留1位小数
    • shadow:表示是否在饼图下面画阴影,默认值:False,即不画阴影
    • Tstartangle:设置起始绘制角度,默认图是从x轴正方向逆时针画起,如果设定startangle=90,则从y轴正方向画起

    例如:

    • import pandas as pd
    • from matplotlib import pyplot as plt
    • from matplotlib import font_manager
    • my_font = font_manager.FontProperties(fname='/data/course_data/data_analysis/STSONG.TTF',size=10)
    • df = pd.read_excel('/data/course_data/data_analysis/lagou.xlsx')
    • plt.figure(figsize = (10,8))
    • num = df.groupby('学历').size()
    • # 绘制饼图
    • patches, l_text, p_text = plt.pie(num,labels = num.index, autopct='%.1f%%',shadow=False,startangle=90)
    • for t in l_text:
    • t.set_fontproperties(my_font)
    • plt.show()

    plt.pie()会有三个返回值

    • patches: matplotlib.patches.Wedge列表(扇形实例)
    • l_text:label matplotlib.text.Text列表(标签实例)
    • p_text:label matplotlib.text.Text列表(百分比标签实例)

    所以,在每一个扇形外侧显示中文的时候,需要获取到每一个标签实例,然后通过set_fontproperties()方法设置自定义字体。

    五.总结

     六.绘制双Y轴坐标系

      1.双y轴绘制的关键函数:twinx()

    • fig = plt.figure(figsize=(20,8),dpi=80)
    • ax = fig.add_subplot(111)
    • lin1 = ax.plot(feb_datas.index.strftime('%Y-%m-%d').tolist(),feb_datas['开盘价(元)'].values.tolist(),label='开盘价',color='red')
    • ax.set_ylabel("开盘价(元)",fontproperties=my_font)
    • ax.set_xlabel("日期",fontproperties=my_font)
    • ax.legend(prop=my_font)
    • ax2 = ax.twinx()
    • lin2 = ax2.plot(feb_datas.index.strftime('%Y-%m-%d').tolist(),feb_datas['成交量(股)'].values.tolist(),label='成交量(股)')
    • ax2.legend(prop=my_font)
    • ax2.set_ylabel("成交量(股)",fontproperties=my_font)

      2.合并图例

    • # 合并图例
    • lns = lin1+lin2
    • labs = [l.get_label() for l in lns]
    • ax.legend(lns, labs, prop=my_font)

      3.Matplotlib在绘制图形的时候会默认显示上面和右侧的边框,以及坐标轴的颜色默认是黑色。如果想要去掉默认的边框,通过plt.gca()获得当前的Axes对象。使用spines属性获取到对应的边框。

    •  ax = plt.gca()
    • ax.spines['right']
    • right右边框、left左边框、top上边框、bottom下边框。

      4.通过set_color('none')方法可以设置边框的颜色。

    • ax.spines['right'].set_color('none')
    • none表示无色,也可以用red、blue等样式的英语单词或者是十六进制的颜色值#0000FF。

      5.如果想要X轴的0点,和Y轴的0点交叉,需要使用set_position方法移动坐标轴的位置。

    • ax.spines['bottom'].set_position(('data', 0))
    • ax.spines['left'].set_position(('data', 0))

    七.总结

  • 相关阅读:
    文件
    模块
    异常
    抽象
    条件,循环
    centos6.4 64位下安装nfs文件共享系统
    YUM安装删除软件
    apache常用的两种工作模式 prefork和worker
    shell不打印
    APACHE安装配置说明
  • 原文地址:https://www.cnblogs.com/fanshudada/p/12932002.html
Copyright © 2020-2023  润新知