- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 563399 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174243
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
E; J. P5 V5 f6 i& ^
python+matplotlib绘制南丁格尔玫瑰图
' R1 [; t4 Z" Y% Y0 C7 U实验:绘制南丁格尔玫瑰图8 S! d* U& ?# B5 o
本实验有一定难度,有人说matplotlib绘图和matlab大同小异,我看除了一些函数名相同之外,其他的像参数和使用方法很不一样.另外我不知道是不是在matlab中画玫瑰图直接一个"肉丝"函数就成了,为什么matplotlib里面没有~~
7 i7 Y- i1 u5 ~: a" o- ^ 无论如何还是感谢本次实验,虽然费了点时间但是我对函数画图有了一定深度的了解和掌握,草草在python之matplotlib库重要绘图函数简介里面记录了一下,因为内容太多没有一一写成博文,但是附加了一些别人博客的链接,还是很有帮助的.7 E4 T7 l& Z0 P3 R$ q. h
2 G7 G& x+ W/ I* b8 b |文章目录8 p# m% L9 n* S7 A9 X) ?4 L8 E- Z
% b+ h+ h/ m/ T, O' a一、实验目的
/ p6 d! X7 L$ D& H% I0 ?二、实验内容# P- ?$ F8 j: y- ?
三、实验环境
+ q8 Q" ~5 D3 g. B. \ J四、实验步骤1 ^ R0 Z) b: j; x; d
五、实验代码及测试! A2 ]+ Y$ c0 d( y: Z: ^' d) N
1.源代码
7 ^( D; {4 q% ~4 l# z! O0 V2.运行结果4 L( l/ _3 w$ E0 L! h# i
3.excel数据表
}$ s+ c0 x* a3 w7 P1 @一、实验目的
% g/ Y; h" k! w5 k1 v7 J& Q1 r( b3 g
了解玫瑰图的前世今生;了解matplotlib标准库中的pyplot模块;了解在极坐标系中绘制柱状图。 a9 }' N9 t' T! H- D* K9 ^4 G
, _- H9 v+ e( {. c* W二、实验内容4 F! t$ `$ l8 l+ K
) Z& n. L) m" d
南丁格尔玫瑰图(Nightingale rose diagram)又名鸡冠花图(Coxcomb Chart)或极坐标区域图(Polar area diagram)。它将柱图转化为更美观饼图形式,是极坐标化的柱图。不同于饼图用角度表现数值或占比,南丁格尔玫瑰图使用扇形的半径表示数据的大小,各扇形的角度则保持一致。6 k! i" R) E9 O/ w4 |3 u3 x ]2 d
自行选择一组数据,画出基础玫瑰图。! x% F1 ~ D6 ~
3 X/ K7 \- {/ P+ L三、实验环境- ?" [( w( j0 L) l# H1 k, f Q
3 O% L, e: R+ {# t" b: `
ython 3.8
( v5 q$ b3 J& `
) P4 Q5 A1 E8 Z四、实验步骤4 E8 z5 q* r8 s! p- x( y+ H2 x8 u
& A7 k# y9 x( r% P6 i
查阅文档,了解南丁格尔玫瑰图的原理。. z$ a1 k- [3 y6 r( F& j
选择一组数据,编写程序画出玫瑰图。5 N2 a0 U0 y. F& G" {5 B8 {
五、实验代码及测试
7 A5 x( ^: C @1 b
' r( X: ]7 B' x. e& j, a1.源代码; ~2 b- k; t6 Y
5 \9 h- {) R) S/ E1 A: c0 n
import matplotlib.pyplot as plt
4 Y. `; b5 ^8 o. T1 L- c* L) P& @import numpy as np) [! |, o: g( ?- b
import xlrd4 r, h7 z3 Q" l- }. X
+ E g. U* Y2 o5 H, Z5 F- \& @
'''
. M, {/ ~% y; I$ g# X 按列读取excel文件并存入两个列表; V C: Q ]+ P2 J$ J
'''
1 H$ u7 W% M7 d# o( \+ K6 idata=xlrd.open_workbook(r'亚洲国家疫情数据.xlsx') 8 a( v4 \7 g: N" @5 M& L" h
table = data.sheets()[0] #通过索引顺序获取工作表
7 Q- h7 g% r/ k2 S/ ccols_n = table.ncols
8 x. y! o! F4 @& h- v: d0 b0 i. Mcountry_list = table.col_values(0,start_rowx=1) # start_rowx默认为0,设置为1去掉列名
+ z* W, Z! y& @) \ |0 H. U3 ? f2 }data_list = table.col_values(1,start_rowx=1)1 [9 m8 t/ B+ u( r* ]! A' Q3 u# U
# print(data_list)
. ^% U% I0 c. H( U* a, w, v0 I! @
3 \$ C$ ?& J u4 X |'''
3 E+ U! X2 |. V1 s5 r$ x" F1 t 计算角度
! S) n c# n' p- l W'''" n7 k& v2 m4 V: m( S0 q3 M
n = table.nrows-1 #去掉列名
6 O: E- }/ s1 S6 T) s) | ltheta = np.linspace(0,2*np.pi,len(data_list)) # 360度等分成n份
$ E, b2 l0 s0 c3 {6 E1 j y; p- T5 R0 T+ n" k
'''0 T) M" |& g( I
作图8 \( T& y& n: {+ m6 U& m" F
'''
# U( C: w. b$ W9 ^# 设置画布
/ C- S. d3 v6 `/ l# [8 }fig = plt.figure(figsize=(12,10))0 N* F* a6 ?$ c9 k D* w0 j [8 L
# 极坐标
* q0 G, C [" s& K, u; |ax = plt.subplot(111,projection = 'polar')9 D+ p) | o/ o: g, K. Z$ [
# 顺时针并设置N方向为0度
1 r+ M X* Y3 r% bax.set_theta_direction(-1)3 O; ^( |: V8 [ Q* t
ax.set_theta_zero_location('N') 8 r8 {* n. N6 [9 x2 t
, o$ e3 ~( m) U" g* U& @
# 在极坐标中画柱形图) l$ o7 b( {; L: E W d
ax.bar(theta,
& }5 M* p, k+ ]: v% Z data_list,8 C+ v0 Z2 d+ V! F9 Y; `
width = 0.33,9 c) h& ^. ^/ U' Q' c
color = np.random.random((len(data_list),3)),0 l6 y) R8 u+ G, Q0 k9 j* M
# labels=str(country_list),
% k1 d4 }: ~# B; ?% p align = 'edge')
+ r! v% \, \2 u7 G''' * x* Y& A U0 J/ Y" @' r4 `
显示一些简单的中文图例
7 w3 U+ e; @6 L& Q% \& o7 D'''/ V" H% H0 s4 q4 A; T2 ?3 e" Y
plt.rcParams['font.sans-serif']=['SimHei'] # 黑体
) \3 v3 X& o3 l& c( o( |! E# T" xax.set_title('亚洲国家现存确诊',fontdict={'fontsize':20})/ C4 b3 \; {, b/ s
for angle,data in zip(theta,data_list):) v$ k* b& \9 U: s$ h! W" X
ax.text(angle+0.03,data+100,str(data))
! ?; |3 ?# {& R% `9 {& t+ [) e" \/ |
; B5 l! Z) R/ O' S3 Fplt.axis('off')3 U5 U5 J8 A" {. y
1 E" g2 H d" y: @( ?& y# Dplt.savefig('Nightingale_rose.png')
/ a" ?! Z# }) c7 v4 y; r) tplt.show()
2 V! b3 ?% }. X8 a6 k; e
0 @3 C q* K5 l& N" d" q' u& x2 j7 S P
2.运行结果$ }2 G8 j5 l/ q* [# t" O" R( o
; G4 r# p% l1 U
& w. C) O& W# d# ]. D w7 H' y7 J5 a; ?( Y
3.excel数据表. V4 l5 ]/ |0 A! [9 W4 Q& {- n2 E4 h
% E" ]1 y# m" I' `' r
" V: w7 }. }# ~- n% y: {& }8 S4.说明
$ ~4 m: q7 |% } 四位数过长,而对应的图所占比例很小,所以在图上的标注有些重叠.
, Q& X3 X/ g0 B) M* x7 b 实验让画出基础玫瑰图,并没有图例和标签的要求,而且给玫瑰图设置标签的步骤比较繁琐,所以没有涉及到.+ [- L; U- U+ M F+ ?2 J- g
————————————————( h5 G$ p" G# E5 A: x; A
版权声明:本文为CSDN博主「小兰同学」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
/ F9 M9 M" G; A7 [- {原文链接:https://blog.csdn.net/weixin_42323041/article/details/106263852) ?% U! k* [- f' t
+ M1 ?. p% _+ F* U, g
) E2 c0 e p2 L; K* G |
zan
|