国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python Matplotlib數(shù)據(jù)可視化繪圖之(一)————柱狀圖

這篇具有很好參考價值的文章主要介紹了Python Matplotlib數(shù)據(jù)可視化繪圖之(一)————柱狀圖。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


前言

本文我們主要介紹利用Python中的Matplotlib模塊進(jìn)行幾種柱狀圖的畫法,包括整張圖片只有一種顏色的不分組柱狀圖、整張圖片有好幾種顏色的不分組柱狀圖、整張圖片有好幾種顏色的分組柱狀圖等。


一、所用到的模塊

主要利用Python中的Matplotlib模塊完成該功能。

二、單一顏色的普通不分組柱狀圖

1.示例數(shù)據(jù)如下

表格如下(示例):

語言種類 2020年用戶量(人數(shù))
C 2000
C++ 3000
Python 3000
Java 5000
Java Script 2000
PHP 1000
Ruby 800

現(xiàn)在需要把表格中的數(shù)據(jù)繪制成柱狀圖,從而進(jìn)一步分析各類語言的用戶的使用情況。

2.代碼如下

2.1 代碼如下(示例):

2.1.1 Case1:
import matplotlib
import matplotlib.pyplot as plt
import numpy as np

# 設(shè)置字體, 解決中文亂碼問題
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
# 解決圖像中的'-'負(fù)號的亂碼問題
plt.rcParams['axes.unicode_minus'] = False

x_labels = ['C', 'C++', 'Python', 'Java', 'Java Script', 'PHP', 'Ruby']
y = [2000, 3000, 3000, 5000, 2000, 1000, 800]
fig = plt.figure(figsize=(8, 6), facecolor='#B0C4DE')
ax = fig.add_subplot(facecolor='white')
# 紅橙黃綠青藍(lán)紫
color_list = ['#FF0000', '#FF8C00', '#FFFF00', '#00FF00', '#00FFFF', '#0000FF', '#800080']
x_loc = np.arange(7)
# 這里顏色設(shè)置成 橙色:"#FF8C00"
ax.bar(x_loc, y, color=color_list[1])
plt.grid(True, ls=':', color='b', alpha=0.3)
plt.xlabel('編程語言類別', fontweight='bold')
plt.ylabel('編程語言用戶量(人數(shù))', fontweight='bold')
plt.title('編程語言用戶量數(shù)據(jù)分析圖', fontweight='bold')
plt.show()

輸出結(jié)果如下:
Python Matplotlib數(shù)據(jù)可視化繪圖之(一)————柱狀圖

注意:此時圖片的橫坐標(biāo)的刻度標(biāo)簽沒有按照我們的要求把各個語言的名字顯示出來,并且圖片中沒有網(wǎng)格,不方便我們查看對應(yīng)的縱軸的值。


2.1.2 Case2:

因此,我們對上述代碼優(yōu)化如下:
(1)把橫坐標(biāo)的刻度標(biāo)簽加上去:

ax.set_xticklabels(x_labels)

(2)加上網(wǎng)格:

plt.grid(True, ls=':', color='b', alpha=0.3)

此時完整代碼如下:

import matplotlib
import matplotlib.pyplot as plt
import numpy as np

# 設(shè)置字體, 解決中文亂碼問題
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
# 解決圖像中的'-'負(fù)號的亂碼問題
plt.rcParams['axes.unicode_minus'] = False

x_labels = ['C', 'C++', 'Python', 'Java', 'Java Script', 'PHP', 'Ruby']
y = [2000, 3000, 3000, 5000, 2000, 1000, 800]
fig = plt.figure(figsize=(8, 6), facecolor='#B0C4DE')
ax = fig.add_subplot(facecolor='white')
# 紅橙黃綠青藍(lán)紫
color_list = ['#FF0000', '#FF8C00', '#FFFF00', '#00FF00', '#00FFFF', '#0000FF', '#800080']
x_loc = np.arange(7)
# 這里顏色設(shè)置成 橙色:"#FF8C00"
ax.bar(x_loc, y, color=color_list[1])
ax.set_xticklabels(x_labels)
plt.grid(True, ls=':', color='b', alpha=0.3)
plt.xlabel('編程語言類別', fontweight='bold')
plt.ylabel('編程語言用戶量(人數(shù))', fontweight='bold')
plt.title('編程語言用戶量數(shù)據(jù)分析圖', fontweight='bold')
plt.show()

輸出結(jié)果如下:
Python Matplotlib數(shù)據(jù)可視化繪圖之(一)————柱狀圖

注意:此時坐標(biāo)軸還是沒有按照我們想要的樣子來呈現(xiàn)對應(yīng)的刻度標(biāo)簽,并且會報出如下的錯誤提示:
Python Matplotlib數(shù)據(jù)可視化繪圖之(一)————柱狀圖


2.1.3 Case3:

小編經(jīng)過一番debug發(fā)現(xiàn)出現(xiàn)這個報錯的原因是我們在ax.set_xticklabels(x_labels)前面沒有加上ax.set_xticks(x_labels)這句語句。下面我們把這句語句加上去,再試試。此時完整代碼如下:

import matplotlib
import matplotlib.pyplot as plt
import numpy as np

# 設(shè)置字體, 解決中文亂碼問題
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
# 解決圖像中的'-'負(fù)號的亂碼問題
plt.rcParams['axes.unicode_minus'] = False

x_labels = ['C', 'C++', 'Python', 'Java', 'Java Script', 'PHP', 'Ruby']
y = [2000, 3000, 3000, 5000, 2000, 1000, 800]
fig = plt.figure(figsize=(8, 6), facecolor='#B0C4DE')
ax = fig.add_subplot(facecolor='white')
# 紅橙黃綠青藍(lán)紫
color_list = ['#FF0000', '#FF8C00', '#FFFF00', '#00FF00', '#00FFFF', '#0000FF', '#800080']
x_loc = np.arange(7)
# 這里顏色設(shè)置成 橙色:"#FF8C00"
ax.bar(x_loc, y, color=color_list[1])
ax.set_xticks(x_loc)
ax.set_xticklabels(x_labels)
plt.grid(True, ls=':', color='b', alpha=0.3)
plt.xlabel('編程語言類別', fontweight='bold')
plt.ylabel('編程語言用戶量(人數(shù))', fontweight='bold')
plt.title('編程語言用戶量數(shù)據(jù)分析圖', fontweight='bold')
plt.show()

輸出結(jié)果如下:
Python Matplotlib數(shù)據(jù)可視化繪圖之(一)————柱狀圖


三、多種顏色的普通不分組柱狀圖

1.示例數(shù)據(jù)如下

表格如下(示例):

語言種類 2020年用戶量(人數(shù))
C 2000
C++ 3000
Python 3000
Java 5000
Java Script 2000
PHP 1000
Ruby 800

現(xiàn)在需要把表格中的數(shù)據(jù)繪制成柱狀圖,從而進(jìn)一步分析各類語言的用戶的使用情況。

2.代碼如下

2.1 代碼如下(示例):

2.1.1 Case1:
import matplotlib
import matplotlib.pyplot as plt
import numpy as np

# 設(shè)置字體, 解決中文亂碼問題
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
# 解決圖像中的'-'負(fù)號的亂碼問題
plt.rcParams['axes.unicode_minus'] = False

x_labels = ['C', 'C++', 'Python', 'Java', 'Java Script', 'PHP', 'Ruby']
y = [2000, 3000, 3000, 5000, 2000, 1000, 800]
fig = plt.figure(figsize=(8, 6), facecolor='#B0C4DE')
ax = fig.add_subplot(facecolor='white')
# 紅橙黃綠青藍(lán)紫
color_list = ['#FF0000', '#FF8C00', '#FFFF00', '#00FF00', '#00FFFF', '#0000FF', '#800080']
x_loc = np.arange(7)
# 這里顏色設(shè)置成 橙色:"#FF8C00"
ax.bar(x_loc, y, color=color_list)
ax.set_xticks(x_loc)
ax.set_xticklabels(x_labels)
plt.grid(True, ls=':', color='b', alpha=0.3)
plt.xlabel('編程語言類別', fontweight='bold')
plt.ylabel('編程語言用戶量(人數(shù))', fontweight='bold')
plt.title('編程語言用戶量數(shù)據(jù)分析圖', fontweight='bold')
plt.show()

輸出結(jié)果如下:
Python Matplotlib數(shù)據(jù)可視化繪圖之(一)————柱狀圖


四、多種顏色的普通分組柱狀圖

1.示例數(shù)據(jù)如下

假如增加了2021和2022年每種語言的用戶量情況,數(shù)據(jù)如下表所示(示例):

語言種類 2020年用戶量人數(shù) 2021年用戶量人數(shù) 2022年用戶量人數(shù)
C 2000 3000 5000
C++ 3000 4000 6000
Python 3000 6000 10000
Java 5000 4000 6000
Java Script 2000 4000 3000
PHP 1000 2000 2000
Ruby 800 1000 1000

現(xiàn)在需要把表格中的數(shù)據(jù)繪制成柱狀圖,從而進(jìn)一步分析各類語言的用戶的使用情況。

2.代碼如下

2.1 代碼如下(示例):

2.1.1 Case1:
  • 代碼如下:
import matplotlib
import matplotlib.pyplot as plt
import numpy as np

# 設(shè)置字體, 解決中文亂碼問題
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
# 解決圖像中的'-'負(fù)號的亂碼問題
plt.rcParams['axes.unicode_minus'] = False

x_labels = ['C', 'C++', 'Python', 'Java', 'Java Script', 'PHP', 'Ruby']
y_2020 = [2000, 3000, 3000, 5000, 2000, 1000, 800]
y_2021 = [3000, 4000, 6000, 4000, 4000, 2000, 1000]
y_2022 = [5000, 6000, 10000, 6000, 3000, 2000, 1000]
legend_labels = ['2020', '2021', '2022']
y = [y_2020, y_2021, y_2022]
fig = plt.figure(figsize=(8, 6), facecolor='#B0C4DE')
ax = fig.add_subplot(facecolor='white')
# 紅橙黃綠青藍(lán)紫
color_list = ['#FF0000', '#FF8C00', '#FFFF00', '#00FF00', '#00FFFF', '#0000FF', '#800080']
x_loc = np.arange(7)
# x軸上每個刻度上能容納的柱子的總的寬度設(shè)為0.8
total_width = 0.8
# 由y值可以看出x軸每個刻度上一共有3組數(shù)據(jù), 也即3個柱子
total_num = 3
# 每個柱子的寬度用each_width表示
each_width = total_width / total_num
if total_num % 2 == 0:
    x1 = x_loc - (total_num / 2 - 1) * each_width - each_width / 2
else:
    x1 = x_loc - ((total_num - 1) / 2) * each_width
x_list = [x1 + each_width * i for i in range(total_num)]
print(x_list)
# 這里顏色設(shè)置成 橙色:"#FF8C00"
for i in range(0, len(y)):
    ax.bar(x_list[i], y[i], color=color_list[i], width=each_width, label=legend_labels[i])
ax.set_xticks(x_loc)
ax.set_xticklabels(x_labels)
ax.grid(True, ls=':', color='b', alpha=0.3)
ax.set_xlabel('編程語言類別', fontweight='bold')
ax.set_ylabel('編程語言用戶量(人數(shù))', fontweight='bold')
plt.title('編程語言用戶量數(shù)據(jù)分析圖', fontweight='bold', pad=25)
# 添加雙軸
ax_twinx = ax.twinx()
ax_twinx.plot(x_loc, y_2021, linestyle='-', marker='o', markersize=3, color=color_list[1], label='Middle')
fig.legend(loc='upper center', bbox_to_anchor=(0.5, 0.96), frameon=False, ncol=5, handlelength=0.9, handleheight=0.9, fontsize='small')
ax_twinx.set_ylabel('Middle', fontweight='bold')
fig.tight_layout()
fig.subplots_adjust(top=0.9)
plt.show()
  • 輸出結(jié)果如下:
    Python Matplotlib數(shù)據(jù)可視化繪圖之(一)————柱狀圖

2.2 我們可以看到,在上述作圖過程中,我們把畫布(fig)背景色設(shè)置為#B0C4DE,把軸域(ax)背景色或者稱為繪圖區(qū)域背景色設(shè)置為white(純白色),以上圖片都是我截圖保存下來的,所以能夠保持我們對fig和ax的背景色的設(shè)置,但是如果我們想用plt.savefig()語句把圖片保存到本地,且仍然保留我們對fig和ax的背景色的設(shè)置的話,需要使用以下語句參數(shù),如下所示:

plt.savefig(picturename + '.jpg', facecolor=self.fig.get_facecolor())
# facecolor=self.fig.get_facecolor()就是需要我們添加的參數(shù), 這樣我們就能把圖片的fig和ax區(qū)域設(shè)定的背景色保存到本地了。

五、總結(jié)

以上就是今天要講的內(nèi)容,本文僅僅簡單介紹了Python中Matplotlib模塊對于繪制柱狀圖時需要注意的方面,對于不同類型的柱狀圖,我們需要設(shè)置不同的參數(shù)來調(diào)控。希望對廣大初學(xué)者網(wǎng)友有幫助。文章來源地址http://www.zghlxwxcb.cn/news/detail-460233.html

到了這里,關(guān)于Python Matplotlib數(shù)據(jù)可視化繪圖之(一)————柱狀圖的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包