數據可視化技術頭歌測試合集

在這里插入圖片描述

努力是為了不平庸~

學習的最大理由是想擺脫平庸,早一天就多一份人生的精彩;遲一天就多一天平庸的困擾

目錄

時間趨勢可視化-柱形圖

第1關:“大胃王”比賽數據柱形圖繪制——繪制柱形圖的基本步驟

任務描述

相關知識

觀察和處理數據

繪制柱形圖

編程要求

測試說明

?第2關:“大胃王”比賽數據柱形圖繪制——柱形圖展示優化

任務描述

相關知識

對柱形圖進行美化

將柱形圖保存為 PDF 文件或 png 文件

編程要求

測試說明

時間趨勢可視化-柱形圖

第1關:“大胃王”比賽數據柱形圖繪制——繪制柱形圖的基本步驟

任務描述

本關任務:根據實訓提供的“大胃王”比賽數據繪制柱形圖,熟悉柱形圖繪制的基本步驟。

相關知識

為了完成本關任務,你需要掌握:

  1. 觀察和處理數據;
  2. 繪制柱形圖的基本步驟。
觀察和處理數據

先導入matplotlibpandas,用pandas中的read_csv()方法讀取 csv 格式文件。

  1. import pandas as pd #導入pandas,用于生成滿足繪圖要求的數據格式
  2. from matplotlib import pyplot as plt #導入matplotlib,用于繪制柱形圖
  3. from matplotlib.backends.backend_pdf import PdfPages #用于將圖片保存成pdf
  4. hot_dog = pd.read_csv(r"matplotlib_bar/csv/hot-dog-contest-winners.csv") #返回值為二維標記數據結構DataFrame
  5. hot_dog.head() #返回前五行數據

讓我們先看看數據文件的前5行內容:

YearWinnerDogs eatenCountryNew record
1980Paul Siederman & Joe Baldini9.1United States0
1981Thomas DeBerry9.1United States0
1982Steven Abrams11.0United States0
1983Luis Llamas19.5Mexico0
1984Birgit Felden9.5Germany0

這個數據展示的是自1980年開始,每年吃熱狗大賽的冠軍姓名,冠軍吃掉熱狗的數量,冠軍的國籍,以及是否打破紀錄(0表示沒有破紀錄,1表示破紀錄)。

繪制柱形圖

首先簡單介紹一下繪制柱形圖的 bar 函數:

  1. matplotlib.pyplot.bar(x, height, width=0.8, bottom=None, *, align='center', data=None, **kwargs)[source]

參數:

  • x:x 坐標,數據類型?intfloat
  • height:柱形高度,數據類型?intfloat
  • width:柱形寬度,默認?0.8,范圍?0 - 1?之間
  • bottom:條形的起始位置,也是 y 軸的起始坐標
  • align:條形的中心位置,center,?edge邊緣
  • color:條形的顏色,r,?b,?g,?#123465等,默認?b
  • edgecolor:邊框的顏色,同上
  • linewidth:邊框的寬度,默認無,int?類型
  • tick_label:下標的標簽,可以是元組類型的字符組合
  • log:y 軸使用科學計算法表示,bool?類型
  • orientation:是豎直條還是水平條,豎直:vertical,水平條:horizontal

其中,最基本和最常用的是x, height, widthcolor四個參數。 接下來讓我們開始畫一張不同年份冠軍吃掉熱狗數量的柱形圖。

  1. fig, ax = plt.subplots() #subplots返回畫布和子圖
  2. axis.bar(hot_dog["Year"],hot_dog["Dogs eaten"]) #繪制柱形圖,第一個參數為x軸變量,第二個參數為y軸變量
  3. plt.show() #顯示圖像

此時生成的圖像如下圖1所示:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖1 默認生成的柱形圖

編程要求

根據提示,在右側編輯器 Begin-End 區間補充代碼,繪制一張不同年份冠軍吃掉熱狗數量的柱形圖。

測試說明

平臺會對你編寫的代碼進行測試,如果你的圖形與正確答案圖形一致,則通關。

# -*- coding: utf-8 -*-
import pandas as pd
from matplotlib import pyplot as plthot_dog = pd.read_csv(r"matplotlib_bar/csv/hot-dog-contest-winners.csv")def plot(): # ********* Begin *********#fig, ax = plt.subplots() #subplots返回畫布和子圖  ax.bar(hot_dog["Year"],hot_dog["Dogs eaten"]) #繪制柱形圖,第一個參數為x軸變量,第二個參數為y軸變量  plt.show()  #顯示圖像 # ********* End *********#plt.savefig('matplotlib_bar/studentfile/studentanswer/level_1/US.png')plt.close()

?第2關:“大胃王”比賽數據柱形圖繪制——柱形圖展示優化

任務描述

本關任務:根據實訓提供的“大胃王”比賽數據繪制柱形圖,并存為 PDF 或 png 文件。

相關知識

為了完成本關任務,你需要掌握:

  1. 對柱形圖進行美化;
  2. 將柱形圖保存為 PDF 文件或 png 文件。
對柱形圖進行美化

關卡1中的柱形圖看起來平平無奇,打破記錄的年份這一信息也沒有體現,如果我們需要突出打破記錄的年份呢?如何用不同的顏色進行表示?此外,系統默認的顏色飽和度很高,能選擇更賞心悅目的顏色嗎?當然可以!

突出破紀錄的年份 在關卡1的基礎上,這一步我們可以寫一個函數,根據年份是否打破紀錄,賦予不同的顏色,然后把各個年份應顯示的顏色放入一個列表中。

  1. def newRecordColor():
  2. "打破記錄的年份顯示為粉紅色,其余年份為灰綠色"
  3. list=[]
  4. for i in hot_dog["New record"]:
  5. if i==1:
  6. list.append("#DB7093") #打破記錄的年份顯示為粉紅色
  7. else:
  8. list.append("#5F9F9F") #其余年份顯示為灰綠色
  9. return list

別忘了將代碼

  1. axis.bar(hot_dog["Year"],hot_dog["Dogs eaten"])

修改為

  1. ax.bar(hot_dog["Year"],hot_dog["Dogs eaten"],color=newRecordColor()) #添加指定的顏色

光禿禿的柱形圖并不能讓別人快速理解數據的含義,因此,我們應當為柱形圖添加必要的文字說明:

  1. ax.set_xlabel("Year") #設置x軸標簽
  2. ax.set_ylabel("Dogs Eaten") #設置y軸標簽
  3. ax.set_title("Hotdog game scores 1980-2010") #設置標題
  4. ax.set_xlim(1979,2011) #設置x軸數據限值

此時生成的圖像如下圖1所示:

圖1 突出打破紀錄年份后的柱形圖

調整柱子的間距 圖1看起來還不錯,只是柱子之間太擁擠了,可以修改寬度,將代碼:

  1. ax.bar(hot_dog["Year"],hot_dog["Dogs eaten"],color=newRecordColor())

修改為

  1. ax.bar(hot_dog["Year"],hot_dog["Dogs eaten"],width=[0.6],color=newRecordColor()) #添加指定的寬度

然后修改畫布的尺寸,添加代碼:

  1. plt.rcParams['figure.figsize'] = (8.0, 4.0) #設置figure_size尺寸

此時生成的圖像如下圖2如所示:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖2 美化后的柱形圖

將柱形圖保存為 PDF 文件或 png 文件

如果后續想要用 Illustrator 對圖片進行美化,可以將圖片保存為 PDF 格式,添加代碼:

  1. pdf =PdfPages('matplotlib_bar/studentfile/studentanswer/level_2/hotdog.pdf') #設置pdf保存的路徑和文件名
  2. pdf.savefig(fig) #將畫布內容保存為PDF
  3. plt.close() #關閉畫布窗口
  4. pdf.close() #關閉PDF文件

如果想將圖片保存為 png 格式文件,則添加代碼:

  1. plt.savefig('matplotlib_bar/studentfile/studentanswer/level_2/hotdog.png') #保存png文件
  2. plt.close() #關閉畫布窗口
編程要求

根據提示,在右側編輯器 Begin-End 區間補充代碼,繪制柱形圖,并突出美國人獲勝的年份。其中美國人獲勝的年份顯示為粉紅色(#DB7093),其余年份顯示為灰綠色(#5F9F9F),畫布大小等設置與上文保持一致。

測試說明

平臺會對你編寫的代碼進行測試,如果你的圖形與正確答案圖形一致,則通關。 圖片預期輸出示例:


開始你的任務吧,祝你成功!

# -*- coding: utf-8 -*-
import pandas as pd
from matplotlib import pyplot as plthot_dog = pd.read_csv(r"matplotlib_bar/csv/hot-dog-contest-winners.csv")def plot(): # ********* Begin *********#fig, ax = plt.subplots() #subplots返回畫布和子圖  ax.bar(hot_dog["Year"],hot_dog["Dogs eaten"],width=[0.6],color=unitedStatesColor()) #添加指定的寬度ax.set_xlabel("Year") #設置x軸標簽  ax.set_ylabel("Dogs Eaten") #設置y軸標簽  ax.set_title("Hotdog game scores 1980-2010") #設置標題  ax.set_xlim(1979,2011) #設置x軸數據限值  plt.rcParams['figure.figsize'] = (8.0, 4.0) #設置figure_size尺寸  # ********* End *********#plt.savefig('matplotlib_bar/studentfile/studentanswer/level_2/US.png')plt.close()def unitedStatesColor():# ********* Begin *********#list=[]  for i in hot_dog["Country"]:  if i=='United States':  list.append("#DB7093") #打破記錄的年份顯示為粉紅色  else:  list.append("#5F9F9F") #其余年份顯示為灰綠色  return list  # ********* End *********#

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/14558.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/14558.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/14558.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux中gcc/g++的基本使用

目錄 gcc/g的使用gcc/g是如何生成可執行文件的預處理編譯匯編鏈接 庫.o文件是如何與庫鏈接的? debug版本和release版本 gcc/g的使用 在windows中,我們在VS中編寫好了代碼之后就可以直接在VS中對源碼進行編譯等操作后運行 而在Linux下,我們可…

LeetCode 279 —— 完全平方數

閱讀目錄 1. 題目2. 解題思路3. 代碼實現 1. 題目 2. 解題思路 此圖利用動態規劃進行求解,首先,我們求出小于 n n n 的所有完全平方數,存放在數組 squareNums 中。 定義 dp[n] 為和為 n n n 的完全平方數的最小數量,那么有狀態…

vue 展示svg矢量圖可縮放拖動

使用插件&#xff1a;svg-pan-zoom <template> <!-- svg圖--><div id"svgContainer"></div> </template><script> import svgPanZoom from svg-pan-zoom import svgFile from ../datav/img/220kVscb.svg // 路徑根據實際情況調…

MySQL存儲過程實現累加運算 1+2+…+n 等于多少?

MySQL創建存儲過程&#xff0c;實現累加運算&#xff0c;計算 12…n 等于多少。具體的代碼如下 1、實現計算123…n的和 DELIMITER // CREATE PROCEDURE sp_add_sum_num(IN n INT) BEGIN DECLARE i INT; DECLARE sum INT; SET i 1; SET sum 0;WHILE i < n DO SET sum …

若依框架實戰指南:從入門到精通

在當今快節奏的軟件開發環境中&#xff0c;選擇一個高效、可靠的開發框架至關重要。若依框架&#xff08;RuoYi&#xff09;作為一個基于Spring Boot和MyBatis的快速開發平臺&#xff0c;以其強大的功能和易用性受到了廣泛歡迎。本文將詳細介紹若依框架的使用方式&#xff0c;包…

計算機組成結構—中斷和異常

一、基本概念和分類 計算機在執行程序的過程中&#xff0c;有時會遇到一些異常情況或者特殊請求&#xff1b;這時就需要計算機暫停正在運行的程序&#xff0c;轉而先去處理這些異常或特殊請求&#xff0c;處理結束之后再返回程序的斷點處繼續執行。這種處理方式就被稱為 “中斷…

頂堅北斗有源終端有什么功能跟用途

頂堅北斗有源終端作為現代衛星導航與通信技術融合的杰出代表&#xff0c;其用途廣泛且功能強大。在廣袤無垠的偏遠山區、深邃的海洋以及荒蕪的沙漠中&#xff0c;當用戶面臨移動通信信號無法覆蓋的困境時&#xff0c;北斗有源終端便成為了連接世界的橋梁。 該終端的核心功能之一…

PE文件(六)新增節-添加代碼作業

一.手動新增節添加代碼 1.當預備條件都滿足&#xff0c;節表結尾沒有相關數據時&#xff1a; 現在我們將ipmsg.exe用winhex打開&#xff0c;在節的最后新增一個節用于存放我們要增加的數據 注意&#xff1a;飛鴿的文件對齊和內存對齊是一致的 先判斷節表末尾到第一個節之間…

奧德彪的幸福VS碼農的幸福

奧德彪的幸福 非洲國家布隆迪是一個全球最不發達國家之一&#xff0c;大部分居民以農業為生&#xff0c;其中包括香蕉&#xff0c;人們拿香蕉用來做飯也用來釀酒。 香蕉產地距離布隆迪首都布瓊布拉很遠&#xff0c;而這個國家又缺乏規模化的物流企業&#xff0c;于是就誕生了…

Linux進程--函數 system 和 popen 的區別

system() 和 popen() 是 C 語言中用于執行外部命令的兩個函數&#xff0c;它們的功能類似&#xff0c;但在使用方式和特性上有一些區別。 system() system() 函數允許您在程序中執行外部命令&#xff0c;并等待該命令執行完成后繼續執行程序。其基本語法如下&#xff1a; in…

如何使用腳本執行SQL Server 數據庫壓縮備份?

SQL Server 數據庫壓縮備份是否可以實現&#xff1f; 使用時&#xff0c;SQL Server 數據庫會變得非常大&#xff0c;備份也是如此。它們占用大量磁盤空間&#xff0c;并且每次備份數據庫或四處移動都非常耗時。因此&#xff0c;您可能想知道是否有任何方法可以創建壓縮備份。…

pikachu靶場(SQL注入基于布爾的盲注)python實現

import requests from bs4 import BeautifulSoupurl "http://localhost:8086/pikachu-master/vul/sqli/sqli_blind_b.php"def get_database_name(url):dataname # 初始化一個空字符串用于存儲數據庫名dict abcdefghijklmnopqrstuvwxyz # 數據庫名可能存在這些…

docker實戰之搭建MYSQL8.0主從同步

目錄 環境配置容器創建主服務器創建MYSQL容器新增my.cnf文件創建用戶并授權 從服務器創建MYSQL容器新增my.cnf文件重啟MYSQL容器配置主從同步 驗證主從同步彩蛋 MySQL 主從同步&#xff08;Master-Slave Replication&#xff09;是一種常用的解決方案&#xff0c;它允許一個主服…

Golang實現根據文件后綴刪除文件和遞歸刪除文件

概述 這個功能會非常強大&#xff0c;因為在日常工作中&#xff0c;我通常會遇到需要批量刪除文件的場景&#xff0c;通過這個方法&#xff0c;再結合我的另一個 命令行開發框架&#xff0c;能夠很輕松的開發出這個功能。 代碼 package zdpgo_fileimport ("errors"…

LabVIEW與串口通訊在運行一段時間后出現數據接收中斷的問題

這些問題可能與硬件、軟件或通信協議有關。以下是詳細的原因分析和可能的解決方案&#xff1a; 一、硬件原因 串口線纜或接口問題&#xff1a; 由于長時間使用&#xff0c;串口線纜可能出現接觸不良或損壞。接口松動也可能導致通訊中斷。 解決方案&#xff1a;檢查并更換串口…

C語言基礎-內存申請和釋放

在C語言中&#xff0c;malloc 和 free 是用于動態內存分配和釋放的函數。而在C中&#xff0c;new 和 delete 提供了類似的功能&#xff0c;但它們之間有一些重要的區別。 1. malloc 和 free malloc malloc 函數用于在堆上動態地分配指定字節數的內存。它的原型在 stdlib.h 頭…

【Text2SQL 經典模型】X-SQL

論文&#xff1a;X-SQL: reinforce schema representation with context ???? Microsoft, arXiv:1908.08113 X-SQL 與 SQLova 類似&#xff0c;使用 BERT style 的 PLM 來獲得 representation&#xff0c;只是融合 NL question 和 table schema 的信息的方式不太一樣&#…

一種獲取java代碼結構的實現思路

一種獲取java代碼結構的實現思路 有時,我們需要獲取java文件里的代碼結構,即,只需要里面的class定義、方法聲明、屬性定義。不需要額外的方法實現 這里提供一下實現思路: 采用語法解析器Tree-sitter對java代碼進行解析,獲取里面的方法實現遍歷第一步獲取到的方法列表,在源…

Linux c開發線程鎖和條件變量使用

#include <pthread.h> #include <stdio.h> #include <unistd.h>pthread_mutex_t mutex PTHREAD_MUTEX_INITIALIZER; pthread_cond_t cond PTHREAD_COND_INITIALIZER;void* thread_function(void* arg) {printf("線程等待喚醒,鎖定互斥量...\n");…

代碼隨想錄算法訓練營第十七天 | 110. 平衡二叉樹、257. 二叉樹的所有路徑、404. 左葉子之和

[LeetCode] 110. 平衡二叉樹 [LeetCode] 110. 平衡二叉樹 文章解釋 [LeetCode] 110. 平衡二叉樹 視頻解釋 給定一個二叉樹&#xff0c;判斷它是否是 平衡二叉樹 示例 1&#xff1a; 輸入&#xff1a;root [3,9,20,null,null,15,7] 輸出&#xff1a;true示例 2&#xff1a; 輸…