python對CSV文件進行可視化-柱狀圖


我們先看下bar()的構造函數:

# Autogenerated by boilerplate.py.  Do not edit as changes will be lost.
@_copy_docstring_and_deprecators(Axes.bar)
def bar(
        x, height, width=0.8, bottom=None, *, align='center',
        data=None, **kwargs):
    return gca().bar(
        x, height, width=width, bottom=bottom, align=align,
        **({"data": data} if data is not None else {}), **kwargs)

  • x
    包含所有柱子的下標的列表

  • height
    包含所有柱子的高度值的列表

  • width
    每個柱子的寬度。可以指定一個固定值,那么所有的柱子都是一樣的寬。或者設置一個列表,這樣可以分別對每個柱子設定不同的寬度。

  • bottom
    縱坐標的起始值

  • align
    柱子對齊方式,有兩個可選值:center和edge。center表示每根柱子是根據下標來對齊, edge則表示每根柱子全部以下標為起點,然后顯示到下標的右邊。如果不指定該參數,默認值是center。

其他可選的參數有:

  • color
    每根柱子呈現的顏色。同樣可指定一個顏色值,讓所有柱子呈現同樣顏色;或者指定帶有不同顏色的列表,讓不同柱子顯示不同顏色。

  • edgecolor
    每根柱子邊框的顏色。同樣可指定一個顏色值,讓所有柱子邊框呈現同樣顏色;或者指定帶有不同顏色的列表,讓不同柱子的邊框顯示不同顏色。

  • linewidth
    每根柱子的邊框寬度。如果沒有設置該參數,將使用默認寬度,默認是沒有邊框。

  • xerr
    每根柱子頂部在橫軸方向的線段。如果指定一個帶有不同長度值的列表,那么柱子頂部的線段將呈現不同長度,數字越大線段越長,列表長度必須跟柱子的數量一致。

  • yerr
    每根柱子頂端在縱軸方向的線段。如果指定一個帶有不同長度值的列表,那么柱子頂部的線段將呈現不同長度,,數字越大線段越長,列表長度必須跟柱子的數量一致。

  • ecolor
    設置 xerr 和 yerr 的線段的顏色。同樣可以指定一個固定值或者一個列表。

繼續來個小實例:

# 加載數據分析常用庫
import csv
import matplotlib.pyplot as plt

filename = r'D:\learn\project\reptile\job.csv'
with open(filename) as f:
    # 創建閱讀器,調用csv.reader()將前面存儲的文件對象作為實參傳給他
    reader = csv.reader(f)
    # 調用next()一次,將文件的第一行存儲在header_now中
    header_now = next(reader)

    # 根據索引提取公司名稱及薪資范圍,並存儲在列表中
    money = []
    for row in reader:
        money.append(row[2])

    """
    從獲取的薪資范圍列表中分別提取出每個公司給出的最低薪資和最高薪資,
    並將提取到的字符串轉化為float格式存儲
    """
    # 設置變量
    one = []
    two = []
    three = []
    four = []
    five = []

    listmoney = []
    for m in money:
        num = m.split('-')  # 通過‘-’分割
        low = num[0]  # 提取最低薪資
        high = num[1].split('萬/月')[0]  # 提取最高薪資,並將后綴單位去除
        # 轉化數據格式為float
        lows = float(low)
        highs = float(high)

        listmoney.append(lows)
        listmoney.append(highs)

    for i in listmoney:
        if 0 < i <= 1:
            one.append(i)
        elif 1.0 < i <= 1.5:
            two.append(i)
        elif 1.5 < i <= 2.0:
            three.append(i)
        elif 2.0 < i <= 2.5:
            four.append(i)
        elif i >= 2.5:
            five.append(i)

    """
    繪制柱狀圖

    """
    # 用來正常顯示中文標簽
    plt.rcParams['font.sans-serif'] = ['SimHei']
    # 圖標描述
    labels = ['0-1萬/月', '1-1.5萬/月', '1.5-2萬/月', '2~2.5萬/月', '2.5+ 萬/月']
    # 對應變量
    values = [len(one), len(two), len(three), len(four), len(five)]
    print(values)

    # 圖表題目
    plt.title("上海市軟件測試薪資分布", fontsize=12, pad=15)

    # 各項屬性
    plt.tick_params(axis='both', which='major', labelsize=10)

    plt.xlabel('薪資水平') # 橫軸標簽
    plt.ylabel('公司(個)') # 縱軸標簽

    plt.bar(labels,values,width= 0.5,bottom= 1,color = "SkyBlue")

    # 在柱狀圖上顯示具體數值,ha參數控制水平對齊方式,va控制垂直對齊方式
    for x,y in enumerate(values):
        plt.text(x,y+1,'%s'%y,ha = 'center',va = 'bottom',color = 'blue')

    # 顯示圖片
    plt.show()


顯示效果:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM