精华内容
下载资源
问答
  • import matplotlib.pylab as plt %matplotlib inline plt.figure(figsize=(21, 12)) plt.hist(x, bins=50) # plt.hist(df['title'].apply(lambda x: len(x)), bins=50) plt.grid() plt.sav...

     

    利用plt.hist()

    import matplotlib.pylab as plt
    %matplotlib inline
    plt.figure(figsize=(21, 12))
    plt.hist(x, bins=50)
    # plt.hist(df['title'].apply(lambda x: len(x)), bins=50)
    plt.grid()
    plt.savefig('distribution.png')

     

    模块化:

    def plot_data_distribution(value_list, figsize=(21, 12), bins=50, fout=None):
        plt.figure(figsize=figsize)
        plt.hist(value_list, bins=bins)
        plt.xticks(range(int(max(value_list) - min(value_list))))
        # plt.xticks([i * 0.01 for i in range(0, 110, 5)])
        # plt.xticks([0.1 * x for x in range(11)])
        # plt.xlim(0, 1)
        plt.grid()
        if fout:
            plt.savefig(fout)
        else:
            plt.show()

     

    把多个数据分布显示在一个直方图表中对比:

    def plot_multi_data_distribution(value_list1, value_list2, figsize=(21, 12), bins=50, fout=None):
        plt.figure(figsize=figsize)
        plt.hist([value_list1, value_list2], bins=bins, color=["r", "b"], label=["value_list1", "value_list2"])
        # plt.xticks(range(int(max(value_list) - min(value_list))))
        plt.grid()
        plt.legend(loc=1)
        plt.xlabel("probability")
        plt.ylabel("count")
        plt.title("data distribution")
        if fout:
            plt.savefig(fout)
        else:
            plt.show()



     

    def gen_colors(num):
        # colors = ["blue", "red", "green", "black", "brown", "orange", "gray", "purple", "salmon", "hotpink",
        #           "#222222", "#444444", "#666666", "#888888", "#AAAAAA", "#CCCCCC", "#EEEEEE",
        #           "#111111", "#333333", "#555555", "#777777", "#999999"]
        colors = ["black", "darkgrey", "red", "darkorange", "brown", "darkgoldenrod", "yellow", "lightgreen", "green", "lime",
                  "cyan", "deepskyblue", "dodgerblue", "cornflowerblue", "blue", "purple", "fuchsia", "lightpink"]
        return colors[:num]
    
    
    def plot_multi_data_distribution(value_lists, names, figsize=(21, 12), bins=50, fout=None):
        plt.figure(figsize=figsize)
        plt.hist(value_lists, bins=bins, color=gen_colors(num=len(value_lists)), label=names)
        # plt.xticks(range(int(max(value_list) - min(value_list))))
        plt.xticks([i * 0.01 for i in range(0, 110, 5)])
        plt.grid()
        plt.legend(loc=1)
        plt.xlabel("probability")
        plt.ylabel("count")
        plt.title("data distribution")
        if fout:
            plt.savefig(fout)
        else:
            plt.show()

     

     

    生成渐变色:

    def gen_colors(num, base_color="#1000FF", interval=1600000):
        base = int(base_color.replace("#", "0x"), 16)
        # return ["blue", "red", "green", "black", "brown", "orange", "gray", "purple", "hotpink", "salmon"][:num]
        # return ["#0000FF", "#00FF00", "#FF0000", "#00FFFF", "#FF00FF", "#FFFF00", "#000000",
        #         "#666666", "#660000", "#666600", "#660066"][:num]
        return ["#" + hex(base + (i * interval))[2:] for i in range(num)]

     

    例如下面这种(看到眼花哈哈哈): 

    还是选择几种比较特别的颜色会方便看一些.

     

    Matplotlib uses a dictionary from its colors.py module. To print the names use:

    # python2:
    
    import matplotlib
    for name, hex in matplotlib.colors.cnames.iteritems():
        print(name, hex)
    
    # python3:
    
    import matplotlib
    for name, hex in matplotlib.colors.cnames.items():
        print(name, hex)

    This is the complete dictionary:

    cnames = {
    'aliceblue':            '#F0F8FF',
    'antiquewhite':         '#FAEBD7',
    'aqua':                 '#00FFFF',
    'aquamarine':           '#7FFFD4',
    'azure':                '#F0FFFF',
    'beige':                '#F5F5DC',
    'bisque':               '#FFE4C4',
    'black':                '#000000',
    'blanchedalmond':       '#FFEBCD',
    'blue':                 '#0000FF',
    'blueviolet':           '#8A2BE2',
    'brown':                '#A52A2A',
    'burlywood':            '#DEB887',
    'cadetblue':            '#5F9EA0',
    'chartreuse':           '#7FFF00',
    'chocolate':            '#D2691E',
    'coral':                '#FF7F50',
    'cornflowerblue':       '#6495ED',
    'cornsilk':             '#FFF8DC',
    'crimson':              '#DC143C',
    'cyan':                 '#00FFFF',
    'darkblue':             '#00008B',
    'darkcyan':             '#008B8B',
    'darkgoldenrod':        '#B8860B',
    'darkgray':             '#A9A9A9',
    'darkgreen':            '#006400',
    'darkkhaki':            '#BDB76B',
    'darkmagenta':          '#8B008B',
    'darkolivegreen':       '#556B2F',
    'darkorange':           '#FF8C00',
    'darkorchid':           '#9932CC',
    'darkred':              '#8B0000',
    'darksalmon':           '#E9967A',
    'darkseagreen':         '#8FBC8F',
    'darkslateblue':        '#483D8B',
    'darkslategray':        '#2F4F4F',
    'darkturquoise':        '#00CED1',
    'darkviolet':           '#9400D3',
    'deeppink':             '#FF1493',
    'deepskyblue':          '#00BFFF',
    'dimgray':              '#696969',
    'dodgerblue':           '#1E90FF',
    'firebrick':            '#B22222',
    'floralwhite':          '#FFFAF0',
    'forestgreen':          '#228B22',
    'fuchsia':              '#FF00FF',
    'gainsboro':            '#DCDCDC',
    'ghostwhite':           '#F8F8FF',
    'gold':                 '#FFD700',
    'goldenrod':            '#DAA520',
    'gray':                 '#808080',
    'green':                '#008000',
    'greenyellow':          '#ADFF2F',
    'honeydew':             '#F0FFF0',
    'hotpink':              '#FF69B4',
    'indianred':            '#CD5C5C',
    'indigo':               '#4B0082',
    'ivory':                '#FFFFF0',
    'khaki':                '#F0E68C',
    'lavender':             '#E6E6FA',
    'lavenderblush':        '#FFF0F5',
    'lawngreen':            '#7CFC00',
    'lemonchiffon':         '#FFFACD',
    'lightblue':            '#ADD8E6',
    'lightcoral':           '#F08080',
    'lightcyan':            '#E0FFFF',
    'lightgoldenrodyellow': '#FAFAD2',
    'lightgreen':           '#90EE90',
    'lightgray':            '#D3D3D3',
    'lightpink':            '#FFB6C1',
    'lightsalmon':          '#FFA07A',
    'lightseagreen':        '#20B2AA',
    'lightskyblue':         '#87CEFA',
    'lightslategray':       '#778899',
    'lightsteelblue':       '#B0C4DE',
    'lightyellow':          '#FFFFE0',
    'lime':                 '#00FF00',
    'limegreen':            '#32CD32',
    'linen':                '#FAF0E6',
    'magenta':              '#FF00FF',
    'maroon':               '#800000',
    'mediumaquamarine':     '#66CDAA',
    'mediumblue':           '#0000CD',
    'mediumorchid':         '#BA55D3',
    'mediumpurple':         '#9370DB',
    'mediumseagreen':       '#3CB371',
    'mediumslateblue':      '#7B68EE',
    'mediumspringgreen':    '#00FA9A',
    'mediumturquoise':      '#48D1CC',
    'mediumvioletred':      '#C71585',
    'midnightblue':         '#191970',
    'mintcream':            '#F5FFFA',
    'mistyrose':            '#FFE4E1',
    'moccasin':             '#FFE4B5',
    'navajowhite':          '#FFDEAD',
    'navy':                 '#000080',
    'oldlace':              '#FDF5E6',
    'olive':                '#808000',
    'olivedrab':            '#6B8E23',
    'orange':               '#FFA500',
    'orangered':            '#FF4500',
    'orchid':               '#DA70D6',
    'palegoldenrod':        '#EEE8AA',
    'palegreen':            '#98FB98',
    'paleturquoise':        '#AFEEEE',
    'palevioletred':        '#DB7093',
    'papayawhip':           '#FFEFD5',
    'peachpuff':            '#FFDAB9',
    'peru':                 '#CD853F',
    'pink':                 '#FFC0CB',
    'plum':                 '#DDA0DD',
    'powderblue':           '#B0E0E6',
    'purple':               '#800080',
    'red':                  '#FF0000',
    'rosybrown':            '#BC8F8F',
    'royalblue':            '#4169E1',
    'saddlebrown':          '#8B4513',
    'salmon':               '#FA8072',
    'sandybrown':           '#FAA460',
    'seagreen':             '#2E8B57',
    'seashell':             '#FFF5EE',
    'sienna':               '#A0522D',
    'silver':               '#C0C0C0',
    'skyblue':              '#87CEEB',
    'slateblue':            '#6A5ACD',
    'slategray':            '#708090',
    'snow':                 '#FFFAFA',
    'springgreen':          '#00FF7F',
    'steelblue':            '#4682B4',
    'tan':                  '#D2B48C',
    'teal':                 '#008080',
    'thistle':              '#D8BFD8',
    'tomato':               '#FF6347',
    'turquoise':            '#40E0D0',
    'violet':               '#EE82EE',
    'wheat':                '#F5DEB3',
    'white':                '#FFFFFF',
    'whitesmoke':           '#F5F5F5',
    'yellow':               '#FFFF00',
    'yellowgreen':          '#9ACD32'}

    上面对应的颜色:

    另外的显示方式:

    装了seaborn扩展的话,在字典seaborn.xkcd_rgb中包含所有的xkcd crowdsourced color names。如下:

    plt.plot([1,2], lw=4, c=seaborn.xkcd_rgb['baby poop green'])

    所有颜色如下:

     

    更多详细参考:

    https://www.cnblogs.com/jerrybaby/p/6118236.html

    http://baijiahao.baidu.com/s?id=1595822592180003842&wfr=spider&for=pc

    http://baijiahao.baidu.com/s?id=1576521879286470276&wfr=spider&for=pc

    https://blog.csdn.net/yywan1314520/article/details/50818471

    https://www.cnblogs.com/laoniubile/p/5893286.html

    python颜色设置

    python中matplotlib的颜色及线条控制

    转载于:https://www.cnblogs.com/bymo/p/7511542.html

    展开全文
  • 数据可视化能让人们更直观的传递数据所要表达的信息。Python 中有两个专用于可视化的库,matplotlib 和 seaborn ,本文将介绍matplotlibMatplotlib:基于Python的绘图库,提供完全的 2D 支持和部分 3D 图像支持。...

    59885f4e9d8ba4c4a40d7ea16c5de62c.png

    数据可视化能让人们更直观的传递数据所要表达的信息。Python 中有两个专用于可视化的库,matplotlib 和 seaborn ,本文将介绍matplotlib。

    • Matplotlib:基于Python的绘图库,提供完全的 2D 支持和部分 3D 图像支持。
    • Seaborn:该 Python 库能够创建富含信息量和美观的统计图形。Seaborn 基于 matplotlib,具有多种特性,比如内置主题、调色板、可视化单变量数据、双变量数据,线性回归数据和数据矩阵以及统计型时序数据等,能让我们创建复杂的可视化图形。

    一、python代码实现(matplotlib库

    1、导入数据库

    import matplotlib.pyplot as plt 
    
    # 我们最常用matplotlib中的pyplot模块,别名设置为plt是约定俗称常用,也可以自己设置

    2、作图

    结合实际绘画过程,我们来理解一下用python作图,每一行代码的意义:

    9cc26f6271f625c74f286fd8c71f700f.png

    图形种类很多,根据实际项目需求,绘制不同类型的图像,很多时候我们会融合多种图像,从不同角度分析结果:

    1. 数值型:散点图
    2. 时间序列:折线图
    3. 分类数据:柱状图
    4. 颜色:热图
    • 下面介绍一下常见的图以及常用的属性

    2.1 散点图

    x=[0.5,0.75,1,2,3,3.5,4,5.5]  # 某学生不同科目的学习时间
    y=[10,22,25,40,50,70,90,93]     # 对应不同科目的分数
    
    # 画散点图
    plt.scatter(x,y,s=200)  # s表示设置散点的大小
    
    #设置图标标题
    plt.title('学生分数情况',fontsize =24)
    
    # 设置坐标轴标签
    plt.xlabel('学习时间')
    plt.ylabel('考试分数')
    
    plt.show()

    1f127e927e658ac682ec369dd6d1a91b.png

    2.2 折线图

    # 折线图
    x=[1,2,3,4,5]
    y=[10,20,20,35,30]
    
    # 作图
    '''
    linewidth:修改线条宽度
    color:     修改线条颜色
    marker:    点的形状,o表示点为圆圈标记
    linestyle:线条的形状,dash表示用虚线连接,也可以直接用'--'表示
    label:    增加图例
    '''
    
    plt.plot(x,y,linewidth=3,color='red',marker='o',linestyle='--',label='我是图例')
    
    # 显示图例
    plt.legend(loc = 'upper left')  # loc设置图例位置
    
    # 设置图标的标题,并且给坐标轴加上标签
    plt.title('我是标题',fontsize=20)  #fontsize 修改标题大小
    plt.xlabel('我是横轴')
    plt.ylabel('我是纵轴')

    e7e08260fd6fad24a5322359de998468.png

    我们希望x轴的刻度是0,1,2,3,4……,y轴的刻度是0,10,20,30……,所以我们需要手动设置。

    # 修改坐标轴范围——方法1
    plt.xticks([0,1,2,3,4,5,6])  # 直接以列表形式给出横轴
    plt.yticks(np.linspace(0,40,5))  # 利用linspace()可以生成制定范围均匀分布的数,给出纵轴

    bcebc98172d0667c00e8fc195a5b9da9.png
    # 修改坐标轴范围——方法2
    '''
    axis:坐标轴范围
    语法:axis[xmin,xmax,ymin,ymax]
    也就是axis[x轴最小值,x轴最大值,y轴最小值,y轴最大值,]
    
    '''
    plt.axis([0,6,0,40])

    4f9065a0f61f8e173d680d61f24337ee.png
    '''
    使用数组同时绘制多个线性
    '''
    
    x= np.arange(0,20,0.2)
    y1 =  x
    y2 =  x**2 
    y3 = x**3
    
    # 使用plot绘制线条
    lineList = plt.plot(x,y1,x,y2,x,y3)
    
    # 使用setp方法可以同时设置多个线条的属性
    plt.setp(lineList,color='r')
    
    plt.show()

    7e2c3f3bcc595b2dc27355c52828a09b.png

    如何在图上添加文本注释:

    # 数据
    x=[1, 2, 3, 4]
    y=[1, 4, 9, 16]
    
    # 作图
    plt.plot(x,y ,color='r')
    
    # 添加坐标轴名称
    plt.xlabel('我是x轴')
    plt.ylabel('我是y轴')
    
    # 添加注释
    '''
    参数名xy:箭头注释中箭头所在位置,
    参数名xytext:注释文本所在位置,
    arrowprops在xy和xytext之间绘制箭头,
    shrink表示注释点与注释文本之间的图标距离
    # '''
    plt.annotate('我是注释',xytext=(2,10) ,xy =(2,4.5),arrowprops=dict(facecolor='black',shrink=0.02))

    3d0e8523cffb111cdb6f1a81c59bb66d.png

    如何将多个子图画在一个图板上:

    # 数据
    x= np.arange(0,8,0.2)
    y1 =  x
    y2 =  x**2 
    y3 = x**3
    
    
    # 创建画板
    plt.figure(figsize=(3*4,1*3))  # figsize(画板宽度,画板高度),宽度决定列数,高度决定行数
    ax1 = plt.subplot(1,3,1)
    plt.plot(x,y1)
    plt.title('我是y1对应的图')
    
    # 创建画纸2并作图
    ax2 = plt.subplot(1,3,2)
    plt.plot(x,y2)
    plt.title('我是y2对应的图')
    
    # 创建画纸3并作图
    ax3 = plt.subplot(1,3,3)
    plt.plot(x,y3)
    plt.title('我是y3对应的图')
    plt.show()

    cfa87348ade273e2e29e6ed51236cb39.png

    2.3 柱状图

    2.3.1 单系列柱状图

    # 柱状图
    # 数据
    x = np.array(list('ABCDEF'))
    y =  np.random.randint(1,100,6)
    
    # 作图
    # x,y参数:x,y值
    # width:宽度比例
    # facecolor柱状图里填充的颜色
    
    
    plt.bar(x,y,width=0.5,facecolor='lightblue')
    plt.show()plt.bar - 这个网站可出售。 - 最佳的Server monitoring 来源和相关信息。# 柱状图
    # 数据
    x = np.array(list('ABCDEF'))
    y =  np.random.randint(1,100,6)
    
    # 作图
    # x,y参数:x,y值
    # width:宽度比例
    # facecolor柱状图里填充的颜色
    
    
    plt.bar(x,y,width=0.5,facecolor='lightblue')
    plt.show()

    6adb7eb0eb8499a6a1edc495f4718808.png

    2.3.2 多系列柱状图

    之前我们都是用plt来作图,事实上pandas也可以直接作图,下面就展示一下如何用pandas作多系列柱状图:

    # 数据
    df =  pd.DataFrame(np.random.rand(10,3)*20,columns=['a','b','c'])
    df

    99db39873346ff793cd138c455dfc853.png
    # 之前都是用plt作图,其实DataFrame也可以作图
    df.plot(kind='bar')
    plt.show()

    00120be6b36e280273b6a03d04f37cbb.png

    图以DataFrame的index为横轴,columns为纵轴,自动生成了图例。

    # 柱状图的填充颜色也可以更改
    df.plot(kind='bar',colormap='Blues_r',grid=True)   # grid显示网格线
    plt.show()

    8aef6ede39442a707099b071be61dc92.png

    2.3.3 堆叠图

    df.plot(kind='bar',grid = True,stacked=True) 
    # 多系列堆叠图
    # stacked → 堆叠
    plt.show()

    6aca072b94542ac802dc9db360e0da50.png

    2.4 热图

    # 利用随机数生成一个二维数据(5*5)
    data=[]
    for i in range(5):
        temp = list(np.random.randint(10,50,4))
        data.append(temp)
    data

    197cfb6166d92529281527739db535d2.png
    # 作图并选择热图的颜色填充风格,这里选择hot
    from matplotlib import cm
    plt.imshow(data,cmap=plt.cm.hot_r)
    
    #设置标题,横纵坐标
    plt.title('我是标题')
    
    # 增加右侧颜色进度条
    plt.colorbar()
    
    plt.show()

    839f14cd99a73688b7d8874dfd40e78c.png

    颜色越深,表明数字越大。

    展开全文
  • 简介Matplotlib 是 Python 提供的一个绘图库,通过该库我们可以很容易的绘制出折线图、直方图、散点图、饼图等丰富的统计图,安装使用 pip install matplotlib 命令即可,Matplotlib 经常会与 NumPy 一起使用。...
    42d96bfb5e5a048b34bca97e5ab7e1f4.gif点击上方蓝字关注,学习 Python 

    1. 简介

    Matplotlib 是 Python 提供的一个绘图库,通过该库我们可以很容易的绘制出折线图、直方图、散点图、饼图等丰富的统计图,安装使用 pip install matplotlib 命令即可,Matplotlib 经常会与 NumPy 一起使用。

    在进行数据分析时,可视化工作是一个十分重要的环节,数据可视化可以让我们更加直观、清晰的了解数据,Matplotlib 就是一种可视化实现方式。

    2. 绘图

    下面我们来学习一下如何使用 Matplotlib 绘制常用统计图。

    2.1 折线图

    折线图可以显示随某一指标变化的连续数据。

    2.1.1 单线

    首先,我们来看一下如何使用 Matplotlib 绘制一个简单的折线图,具体实现如下:

    from matplotlib import pyplot as pltx = range(1, 7)y = [13, 15, 14, 16, 15, 17]plt.title('折线图')plt.xlabel('x 轴')plt.ylabel('y 轴')plt.plot(x, y)plt.show()

    看一下效果: 

    cf44ee3834dd2a8f1b3e2c32a77f2133.png

    我们在使用中文时可能会现乱码的问题,可以通过如下方式解决:

    ① 下载 SimHei.ttf,下载地址为:https://download.csdn.net/download/ityard/12248458,放到 site-packages\matplotlib\mpl-data\fonts\ttf 目录下 

    ② 到 site-packages\matplotlib\mpl-data 目录下找到 matplotlibrc 文件,并修改如下两项即可

    font.sans-serif     : SimHei, DejaVu Sans, Bitstream Vera Sans, Computer Modern Sans Serif, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serifaxes.unicode_minus  : False

    我们还可以改变折线的样式、颜色等,通过示例来看一下。

    from matplotlib import pyplot as pltx = range(1, 7)y = [13, 15, 14, 16, 15, 17]'''figsize:设置图片的宽、高,单位为英寸dpi:设置分辨率'''plt.figure(figsize=(8, 5), dpi=80)plt.title('折线图')plt.xlabel('x 轴')plt.ylabel('y 轴')'''color:颜色linewidth:线的宽度marker:折点样式linestyle:线的样式,主要包括:'-'、'--'、'-.'、':''''plt.plot(x, y, color='red', marker='o', linewidth='1', linestyle='--')# 保存# plt.savefig('test.png')plt.show()

    看一下效果:

    225fc5e0a0231086b2620887c6d92daa.png

    2.1.2 多线

    有时候我们可能存在多个指标对比的情况,也就是需要在一个图中绘制多条折线,比如:我们要了解张三、李四随着年龄增长体重的变化情况,示例如下所示:

    from matplotlib import pyplot as pltx = range(15, 25)y1 = [50, 55, 58, 65, 70, 68, 70, 72, 75, 70]y2 = [52, 53, 60, 63, 65, 68, 75, 80, 85, 72]plt.figure(figsize=(10, 6), dpi=80)plt.title('体重年龄折线图')plt.xlabel('年龄(岁)')plt.ylabel('体重(kg)')plt.plot(x, y1, color='red', label='张三')plt.plot(x, y2, color='blue', label='李四')# 添加网格,alpha 为透明度plt.grid(alpha=0.5)# 添加图例plt.legend(loc='upper right')plt.show()

    看一下效果:

    df1bdbaea00aebd3d35b9593319c5ae9.png

    2.1.3 子图

    Matplotlib 可以实现在一张图中绘制多个子图,我们通过示例来看一下。

    from matplotlib import pyplot as pltimport numpy as npa = np.arange(1, 30)# 划分子图fig, axs = plt.subplots(2, 2)# 绘制子图axs1 = axs[0, 0]axs2 = axs[0, 1]axs3 = axs[1, 0]axs4 = axs[1, 1]axs1.plot(a, a)axs2.plot(a, np.sin(a))axs3.plot(a, np.log(a))axs4.plot(a, a ** 2)plt.show()

    看一下效果:

    f11f4359ddc32fc84c74a9565fd40add.png

    2.2 散点图

    散点图表示因变量随自变量而变化的大致趋势,我们通过示例来具体看一下如何绘制散点图。

    from matplotlib import pyplot as pltimport numpy as npx = np.arange(0, 20)# 生成随机数y = np.random.randint(0, 20, size=20)plt.title('散点图')plt.xlabel('x 轴')plt.ylabel('y 轴')plt.plot(x, y, 'ob')plt.show()

    看一下效果:

    e708db268bd0b7a9176fafc5b2897bec.png

    2.3 直方图

    直方图也被称为质量分布图,主要用来表示数据的分布情况,我们通过示例来看一下如何绘制直方图。

    import matplotlib.pyplot as pltimport numpy as np# 生成随机数d1 = np.random.randn(5000)d2 = np.random.randn(4000)'''bins:直方图条目数alpha:透明度label:图例名'''plt.hist(d1, bins=50, label = 'label1', alpha=0.8)plt.hist(d2, bins=50, label = 'label2', alpha=0.5)plt.grid(alpha=0.3)plt.title('直方图')plt.xlabel('x 轴')plt.ylabel('y 轴')# 显示图例plt.legend()plt.show()

    看一下效果:

    7b0039e6cd637b554605fed9b9b98800.png

    2.4 条形图

    条形图宽度相同,用高度或长短来表示数据多少,它可以横置或纵置。

    2.4.1 纵置

    首先,我们来看一下如何绘制纵向条形图,以学生成绩为例,看一下具体实现。

    import matplotlib.pyplot as pltimport numpy as nparr = np.arange(4)x = ['张三', '李四', '王五', '赵六']y = [77, 79, 70, 70]'''width:长条形宽度label:图例名'''rects = plt.bar(arr, y, width=0.3, label='语文')'''参数1:中点坐标参数2:显示值'''plt.xticks([idx for idx in range(len(x))], x)plt.title('学生成绩条形图')plt.xlabel('姓名')plt.ylabel('成绩')plt.legend()# 在条形图上加标注for rect in rects:    height = rect.get_height()    plt.text(rect.get_x() + rect.get_width() / 2, height, str(height), ha='center', va='bottom')plt.show()

    看一下效果:

    a53ea1e519970d6bdb030cf25d78f7e9.png

    2.4.2 横置

    我们接着再通过示例来看一下如何绘制横向条形图。

    import matplotlib.pyplot as pltimport numpy as nparr = np.arange(4)y = ['张三', '李四', '王五', '赵六']x = [88, 79, 70, 66]plt.barh(range(4), x, 0.4, label='语文')plt.yticks(range(4), y)plt.xlabel('成绩')plt.ylabel('姓名')plt.title('学生成绩条形图')plt.legend(loc='upper right')for x, y in enumerate(x):    plt.text(y + 0.2, x - 0.1, '%s' % y)plt.show()

    看一下效果:

    61a8f071c8b5156925ff8e736e313589.png

    2.4.3 多条

    最后,我们来看一下一个学生要同时显示语文和数学两门成绩时,如何通过 Matplotlib 来绘制条形图。

    import matplotlib.pyplot as pltimport numpy as nparr = np.arange(4)x = ['张三', '李四', '王五', '赵六']y1 = [88, 75, 77, 66]y2 = [77, 79, 70, 70]'''width:长条形宽度label:图例名'''rects1 = plt.bar(arr, y1, width=0.3, label='语文')rects2 = plt.bar(arr + 0.3, y2, width=0.3, label='数学')'''参数1:中点坐标参数2:显示值参数3:间距'''plt.xticks([idx + 0.15 for idx in range(len(x))], x, rotation=10)plt.title('学生成绩条形图')plt.xlabel('姓名')plt.ylabel('成绩')plt.legend()# 编辑文本for rect in rects1:    height = rect.get_height()    plt.text(rect.get_x() + rect.get_width() / 2, height, str(height), ha='center', va='bottom')for rect in rects2:    height = rect.get_height()    plt.text(rect.get_x() + rect.get_width() / 2, height, str(height), ha='center', va='bottom')plt.show()

    看一下效果:

    7e28d288b320cdcc07bd111d7bc830a6.png

    2.5 饼图

    饼图显示一个数据系列,我们通过示例来看一下如何绘制饼图。

    import matplotlib.pyplot as pltlabel_list = ['第一部分', '第二部分', '第三部分']size = [50, 30, 20]# 各部分颜色color = ['red', 'green', 'blue']# 各部分突出值explode = [0, 0.1, 0]'''explode:设置各部分突出label:设置图例显示内容labeldistance:设置图例内容距圆心位置autopct:设置圆里面文本shadow:设置是否有阴影startangle:起始角度,默认从 0 开始逆时针转pctdistance:设置圆内文本距圆心距离l_text:圆内部文本p_text:圆外部文本'''patches, l_text, p_text = plt.pie(size, explode=explode, colors=color, labels=label_list, labeldistance=1.1, autopct="%1.1f%%", shadow=False, startangle=90, pctdistance=0.6)# 设置横轴和纵轴大小相等,这样饼才是圆的plt.axis('equal')plt.legend(loc='upper left')plt.show()

    看一下效果:

    660f7a692ffe35029e519c4d90563bb1.png

    END

    往期回顾

    Python 数据分析(一):NumPy 基础知识

    bfb7afa1751bdcaa9e65f36c25461c58.png

    长按扫码关注,学习 Python

    c708eddc72c71dedf40ddb2d6509777c.gif
    展开全文
  • matplotlib数据分析

    2020-06-24 20:24:43
    matplotlib数据分析 数据可视化也是数据科学中非常重要的一节,面对繁杂的数据我们很难理出头绪,但是画出数据的分布图就不一样了,数据的内在规律清晰可见,尤其是在向领导汇报工作的时候,如果你拿的是一张张表格...

    matplotlib数据分析

    数据可视化也是数据科学中非常重要的一节,面对繁杂的数据我们很难理出头绪,但是画出数据的分布图就不一样了,数据的内在规律清晰可见,尤其是在向领导汇报工作的时候,如果你拿的是一张张表格那基本可以断定你要鸡鸡了,相反,如果你带着一份精美的数据分析图表,不加薪怪你老板没眼光!!

    上代码,这里的数据使用的还是上节的数据!友情提示,我们的数据长这样!
    在这里插入图片描述
    我们的任务是看下商铺评分数据分布!先上代码,再看结果

    import matplotlib.pyplot as plt 
    plt.hist(data["商铺评分"])
    plt.show()
    

    在这里插入图片描述
    在此看到的就是“商铺评分”数据直方图分布!接下来就是针对直方图的美化!

    增加了参数bins的设置,这样直方图的条数更多了!

    import matplotlib.pyplot as plt 
    plt.hist(data["商铺评分"], bins = 30)
    plt.show()
    

    在这里插入图片描述
    从上图可以看出,有少量的数据分布在0.7附近,区别于大多数数据,因此可以判定,这部分数据为异常值!接下来考虑怎样将这部分值滤掉!

    import matplotlib.pyplot as plt 
    data = data[data["商铺评分"]>0.7]  # 数据过滤
    plt.hist(data["商铺评分"], bins = 60)
    plt.show()
    

    在这里插入图片描述
    将异常数据过滤后可以看出数据基本分布在0.97左右!!!

    展开全文
  • Matplotlib数据可视化002:折线图【Python菜鸟进阶大神】Matplotlib数据可视化003:条形图【Python菜鸟进阶大神】Matplotlib数据可视化004:饼图直方图用来描述连续变量(定量变量)的分布情况,横轴表示数据类型,...
  • Matplotlib数据可视化基础绘图基础语法与常用参数pyplot基础语法设置pyplot的动态rc参数分析特征间的关系绘制散点图绘制折线图任务实现分析特征内部数据分布与分散状况绘制直方图绘制饼图绘制箱线图任务实现实训及...
  • Matplotlib数据可视化

    2021-02-25 21:03:07
    安装及使用 ...pip install -i https://mirrors.aliyun.com/pypi/simple/ matplotlib...# 从一个均匀分布[low,high)中随机采样,注意定义域是左闭右开,即包含low,不包含high. numpy.random.uniform(low,high,si
  • Python实验四:Matplotlib数据可视化 实验内容: 任务一:分析1996~2015年人口数据特征间的关系 需求说明:人口数据总共拥有 6 个特征,分别为年末总人口、男性人口、女性人口、城镇人口、乡村人口和年份。查看各个...
  • Matplotlib数据可视化基础3.1 pyplot基础语法、绘图流程1.创建画布与创建子图2.添加画布内容3.保存与展示图形3.2 散点图与折线图(分析特征间的关系)1 散点图scatter函数2 折线图plot函数3.3 直方图、饼图与箱线图...
  • 利用python爬取在前程无忧网搜索python关键字出现的最新招聘数据,保存到本地Excel,进行数据查看和预处理,然后利用matplotlib进行数据分析和可视化。柱形图展示招聘岗位数最多的城市Top10、计算岗位数据的薪酬,...
  • matplotlib数据可视化基础掌握绘图基础语法与常用参数掌握pyplot基础语法创建画布与创建子图添加画布内容分析特征之间的关系二级目录三级目录分析特征内部的数据分布与分散状况二级目录三级目录 掌握绘图基础语法与...
  • matplotlib数据可视化基础(2) 绘制直方图 直方图又称质量分布图,是统计报告图的的一种,用直方图能够置换的看出产品质量的分布状态,已经总体质量的分布情况。基本语法如下: matplotlib.pyplot.bar(left,height,...
  • Python 入门 matplotlib数据可视化基础【二】分析特征之间的关系【散点&折线图】绘制散点图适用场景scatter函数绘制折线图plot函数综合实现 分析特征之间的关系【散点&折线图】 绘制散点图 适用场景 散点图是以一个...
  • 由一系列高度不等的纵向条形组成,表示数据分布的情况 例如某年级同学的身高分布情况 注意和条形图的区别 举例子: # coding:utf-8 import matplotlib.pyplot as plt import numpy as np mu = 100 # 分布的均值 ...
  • 直方图主要反映一维数据分布情况 import pandas as pd import matplotlib.pyplot as plt df = pd.read_excel(r'house_data.xlsx') df.head() Unnamed: 0 均价 小区 地段 具体位置 ...
  • Matplotlib数据可视化002:折线图【Python菜鸟进阶大神】Matplotlib数据可视化003:条形图【Python菜鸟进阶大神】Matplotlib数据可视化004:饼图直方图用来描述连续变量(定量变量)的分布情况,横轴表示数据类型,...
  • 怎样用python的matplotlib模块画累积分布图python matplotlib 有几组数据 每组数据绘制一张图matplotlib 是Python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图。而且也可以方便...
  • ↑↑点击上方蓝字,回复资料,嘿嘿,10个G的惊喜柱状图和直方图是两种非常类似的统计图,区别在于:直方图展示数据分布,柱状图比较数据的大小。直方图X轴为定量数据,柱状图X轴为分类数据。因此,直方图上的每个...
  • 分析特征内部数据分布与分散状况 绘制直方图 主要用户查看各分组数据的数量分布,以及各个分组数据之间的数量比较 可比较直观地看出产品质量特性的分布状态,便于判断其总体质量分布情况 可发现分布表无法发现的数据...
  • 然而散点图和线形图只能直接地展示数据,并不能从统计学的角度给出数据分布。接下来就要讲如何用Matplotlib绘制直方图啦,尤其是二维直方图,在实际中有很强的应用价值。如果我们栏目的知识能帮到你,就请关注、...
  • 箱线图一般用来展现数据分布(如上下四分位值、中位数等),同时,也可以用箱线图来反映数据的异常情况。 boxplot函数的参数解读 绘图之前,我们先来讲解一下matplotlib包中boxplot函数的参数含义及使用方法: plt...
  • 样本空间分布相似 则样本很可能相似 通过一个与样本数相同的 乱序数组 选取一定比例的乱序数组 对应的样本 即完成划分 分类准确度: 预测对的结果数/ ...
  • 然而散点图和线形图只能直接地展示数据,并不能从统计学的角度给出数据分布。接下来就要讲如何用Matplotlib绘制直方图啦,尤其是二维直方图,在实际中有很强的应用价值。如果我们栏目的知识能帮到你,就请关注、...
  • Matplotlib数据可视化002:折线图【Python菜鸟进阶大神】Matplotlib数据可视化003:条形图【Python菜鸟进阶大神】Matplotlib数据可视化004:饼图直方图用来描述连续变量(定量变量)的分布情况,横轴表示数据类型,...
  • 直方图主要反映一维数据分布情况 import pandas as pd import matplotlib.pyplot as plt df = pd.read_excel(r'house_data.xlsx') df.head() Unnamed: 0 均价 小区 地段 具体位置 ...
  • 维基百科将箱形图定义为一种通过四分位数以图形方式描绘数字数据组的方法。它用于描述性统计。您可以在 图1 中看到箱形图的示例。 通常,箱形图表示分布图。它是由一个框体、晶须和离群值构成的。在 图1 中,没有...
  • 这是一篇数据分析与可视化中最有用的50个数据分析图,共分为7类:数据相关性、数据偏差、数据排序、数据分布、数据组成分析、数据变化分析、组等。 原文链接:...
  • 文章目录pyplot基础语法1....3.分析特征内部数据分布与分散状况直方图bar函数饼图pie函数箱线图boxplot函数 pyplot基础语法 1.基本绘图流程 1.创建画布与创建子图 第一部分主要作用是构建出一张空白的画布,并可以...
  • 箱线图一般用来展现数据分布(如上下四分位值、中位数等),同时,也可以用箱线图来反映数据的异常情况。 boxplot函数的参数解读 绘图之前,我们先来讲解一下matplotlib包中boxplot函数的参数含义及使用方法: plt...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,653
精华内容 661
热门标签
关键字:

matplotlib数据分布