python画玫瑰图_央视都在用的“南丁格尔玫瑰图”,原来Python也可以画
前一陣子,我看到央視新聞中,有一張比較好看數據圖,如下:
后來才知道這叫“南丁格爾玫瑰圖”,是南丁格爾護士在克里米亞戰爭期間提交的一份關于士兵死傷報告時發明的一種圖表。
我心想能不能用Python也畫一個,就去網上搜了一些資料,然后自己搗鼓了一下代碼,并進行了梳理,下面是具體步驟。
第一步:安裝并導入相關包
主要用到了pandas和pyecharts這兩個包,需要注意的是pyecharts不同版本之間的的代碼可能稍有不同,我這里安裝的最新版,也就是1.7.1
pip install pandaspip install pyecharts
安裝完成后導入:
import pandas as pdfrom pyecharts.charts import Piefrom pyecharts import options as opts
第二步:讀取數據
我數據放在Excel中,內容與上文央視新聞的數據一樣,是3月11日前最后一次確診新冠肺炎病例連續零新增的天數,共計25個省市區,如下:
data.xlsx
用pandas讀取數據:
data = pd.read_excel("data.xlsx")data.sort_values(by="天數", ascending=False, inplace=True)province = data["省區市"].values.tolist()days = data["天數"].values.tolist()
其中第二行代碼的作用是將數據降序排列,如果各位事先在Excel中排好序了,就沒必要寫第二行代碼。
之所以要降序,是因為最后生成的圖的數據順序,與原數據順序是一致的,降序后畫出來的南丁格爾玫瑰圖更加直觀。
第三步:設置顏色序列
南丁格爾玫瑰圖是否好看與其顏色十分相關,我們要事先給定每個數據想呈現的顏色,并且盡量讓它們過渡的自然些。
color_series = ["#faeb23", "#e8e517", "#c9db33", "#9fcb3d", "#6bbe45", "#37b64b", "#3db979", "#11adcf", "#1f9bca", "#1d8fc6", "#2d6da4", "#26539e", "#2a3780", "#423787", "#69398d", "#7d3a93", "#913986", "#cf208f", "#ea257e", "#eb2462", "#ee3131", "#f1562f", "#f67932", "#f89230", "#e2a924"]
第四步:實例化Pie類
因為主要用到了pyecharts中Pie這個類,所以要先實例化它:
pie = Pie(init_opts=opts.InitOpts(width="1350px", height="900px"))pie.set_colors(color_series)pie.add("", [z for z in zip(province, days)], radius=["30%", "120%"], center=["50%", "66%"], rosetype="area")
radius:半徑大小,數組的第一項是內半徑,第二項是外半徑,默認為 [0, 75],如果寫百分比就是寬高的尺寸乘以百分比
center:中心坐標,數組的第一項是橫坐標,第二項是縱坐標,默認為 [50, 50]
rosetype:使用南丁格爾玫瑰圖,并選用模式,有radius和area兩種模式。默認為radius。radius:扇區圓心角展現數據的百分比,半徑展現數據的大小;area:所有扇區圓心角相同,僅通過半徑展現數據大小。
第五步:設置全局配置
pie.set_global_opts(title_opts=opts.TitleOpts(title="多個省區市\n確診病例連續多日", subtitle="零新增", title_textstyle_opts=opts.TextStyleOpts(font_size=32, color="#0c2a46", font_family="KaiTi", font_weight="bold"), subtitle_textstyle_opts=opts.TextStyleOpts(font_size=66, color="#0c2a46", font_family="KaiTi", font_weight="bold"), pos_right="center", pos_left="center", pos_top="58%", pos_bottom="center"), legend_opts=opts.LegendOpts(is_show=True), toolbox_opts=opts.ToolboxOpts(pos_top="5%"))title_opts:主副標題的樣式設置,這里面的內容看上去比較多,其實大家自己試一下就知道了,類似于CSS,對標題的大小、顏色、字體、是否加粗、位置信息進行設置。
legend_opts:是否顯示圖例。
toolbox_opts:顯示工具盒,并對其顯示的位置進行設置。
這里不知道圖例和工具盒是啥也沒關系,等看到本文最后生成的圖就知道啦。
第六步:設置系列配置項
pie.set_series_opts(label_opts=opts.LabelOpts(is_show=True, position="inside", font_size=16, formatter="{b}\n{c}天", font_style="normal", font_weight="bold", font_family="SimHei"))
這些參數看上去復雜,其實就是對每個扇形里面的文字樣式進行設置,就不解釋了。
第七步:生成html文件
pie.render("南丁格爾玫瑰圖.html")
將上面的代碼運行后,就會生成一個html文件,打開后如下:
南丁格爾玫瑰圖.html
總結
以上是生活随笔為你收集整理的python画玫瑰图_央视都在用的“南丁格尔玫瑰图”,原来Python也可以画的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 工作感言正能量一句话句句精辟
- 下一篇: ubuntu查看默认python版本_u