python筆記35_1:數據可視化之一般柱狀圖

鏈接:https://pan.baidu.com/s/15jQhGzVV9zgYMWxstk-FwA
提取碼:fb0c

# -*- coding: utf-8 -*-
#1. 概念:柱形圖,是一種以長方形的單位長度,根據數據大小繪製的統計圖,用來比較兩個或兩個以上的數據,可以是時間,也可以是不同類別,所以
#柱形圖可以表示趨勢,也可以表示不同項目間的對比,如果橫軸是數值區間,還可以表示數據分佈

#2. 柱形圖繪圖函數:
#繪製縱向的柱形圖:bar(left,height,width,color)
#繪製橫向的柱形圖:barh(bottom,width,height,color)

#參數說明:
#left:x軸的位置序列。一般使用arange函數產生一個序列
#height:y軸的數值序列。也就是柱形圖的高度,一般就是我們需要展示的數據
#width:柱形圖的寬度。一般設置爲1即可
#color:柱形圖的填充顏色

#barh函數請根據方向一一對應即可

import numpy
import pandas
import matplotlib
from matplotlib import pyplot as plt

font = {
        'family':'SimHei'
        }
matplotlib.rc('font',**font)

data = pandas.read_csv("D:/workspaces/python/pythonStudy/35.csv") #列:號碼、省份、手機品牌、通信品牌、手機操作系統、月消費(元)、月流量(M)

result = data.groupby(
                      by=['手機品牌'],
                        as_index=False
                      )['月消費(元)'].agg({'月消費':numpy.sum})
#豎向柱形圖:
#使用arange函數生成間隔爲1,數量爲統計結果行數的遞增序列,用來作爲柱形圖的x軸位置:
index = numpy.arange(result.月消費.size)
plt.bar(index,result['月消費'])
plt.show()

#執行以上代碼圖形就可以顯示出來了,但是問題也很明顯:顏色不好看、沒有標籤、柱子高度沒有排序,顯得凌亂。這樣的柱形圖繪製出來是沒有意義的。

#優化點1:配置顏色
mainColor = (42/256,87/256,141/256,1)
plt.bar(
        index,result['月消費'],
        color=mainColor
        )
plt.show()

#優化點2:配置x軸刻度(標籤)
plt.bar(
        index,result['月消費'],
        color=mainColor
        )
plt.xticks(index,result.手機品牌)
plt.show()

#優化點4:對數據排序後再繪圖(因爲我們發現有兩個柱子的高度幾乎相等,到底誰大誰小呢?)
sgb = result.sort_values(
                         by='月消費',
                         ascending=False  #降序
                         )
#sgb是排序後的數據框

plt.bar(index,sgb.月消費,
        color=mainColor
        )
plt.xticks(index,result.手機品牌)
plt.show()

#繪製橫向柱形圖:
plt.barh(index,sgb.月消費,
         color=mainColor)
plt.yticks(index,sgb.手機品牌)
plt.show()


#以上是單柱形圖的繪製方法,下面開始學習多柱形圖的繪製方法:
#請看下一個源程序文件

運行效果展示:
運行效果
由此可見,python在數據可視化的審美方面,確實還需要提高!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章