1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問(wèn)題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
      Python怎么實(shí)現(xiàn)數(shù)據(jù)可視化分析38個(gè)城市的居住自由指數(shù)

      這篇文章主要介紹“Python怎么實(shí)現(xiàn)數(shù)據(jù)可視化分析38個(gè)城市的居住自由指數(shù)”,在日常操作中,相信很多人在Python怎么實(shí)現(xiàn)數(shù)據(jù)可視化分析38個(gè)城市的居住自由指數(shù)問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”P(pán)ython怎么實(shí)現(xiàn)數(shù)據(jù)可視化分析38個(gè)城市的居住自由指數(shù)”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

      創(chuàng)新互聯(lián)自2013年創(chuàng)立以來(lái),是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元堆龍德慶做網(wǎng)站,已為上家服務(wù),為堆龍德慶各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792

      1 簡(jiǎn)介

      而在這個(gè)報(bào)告中有幾張數(shù)據(jù)可視化作品還是比較可圈可點(diǎn)的,作為(在模仿中精進(jìn)數(shù)據(jù)可視化)系列文章的開(kāi)篇之作,我將基于我觀察原始數(shù)據(jù)可視化作品進(jìn)而構(gòu)思出的方式,以純Python的方式模仿復(fù)刻。

      2 復(fù)刻過(guò)程

      2.1 觀察原作品

      其實(shí)原作品咋一看上去有點(diǎn)復(fù)雜,但經(jīng)過(guò)觀察,將原始圖片主要元素拆分成幾個(gè)部分來(lái)構(gòu)思復(fù)現(xiàn)方式,還是不算復(fù)雜的,我總結(jié)為以下幾部分:

      • 「1 坐標(biāo)系部分」

      稍微懂點(diǎn)數(shù)據(jù)可視化的人應(yīng)該都可以看出原作品的坐標(biāo)不是常規(guī)的笛卡爾坐標(biāo)系,而是極坐標(biāo)系,這里復(fù)現(xiàn)原作品極坐標(biāo)系的難點(diǎn)在于,其并不是完整的極坐標(biāo)系,即左邊略小于半圓的區(qū)域是隱藏了參考線的。

      因此與其在matplotlib中極坐標(biāo)系的基礎(chǔ)上想方法隱藏部分參考線,不如逆向思維,從構(gòu)造參考線的角度出發(fā),自己組織構(gòu)造參考線,會(huì)更加的自由和靈活。

      • 「2 顏色填充」

      這里的「顏色填充」指的是以居住自由指數(shù)折線為中線,在購(gòu)房自由指數(shù)折線與租房自由指數(shù)折線之間的顏色填充區(qū)域,但困難的是這里當(dāng)購(gòu)房自由指數(shù)高于租房自由指數(shù)時(shí)對(duì)應(yīng)的顏色為淺藍(lán)綠色,而反過(guò)來(lái)則變?yōu)榛疑c購(gòu)房自由指數(shù)、租房自由指數(shù)的顏色相呼應(yīng)。

      Python怎么實(shí)現(xiàn)數(shù)據(jù)可視化分析38個(gè)城市的居住自由指數(shù)

      我們只需要設(shè)定中心點(diǎn)參數(shù)在南極點(diǎn)或北極點(diǎn),再配合簡(jiǎn)單的經(jīng)緯度相關(guān)知識(shí)就可以偽造出任意的經(jīng)緯線,再利用geopandas中的投影變換向設(shè)定好的「正射投影」進(jìn)行轉(zhuǎn)換,再作為平面坐標(biāo)進(jìn)行繪圖即可。

      譬如按照這個(gè)思路來(lái)創(chuàng)建東經(jīng)10度到東經(jīng)220度之間,以及南緯-90度到-80度之間,對(duì)應(yīng)的5條緯度線和對(duì)應(yīng)38個(gè)城市的經(jīng)線:

      import geopandas as gpd
      from shapely.geometry import LineString, Point, Polygon
      import matplotlib.pyplot as plt
      import numpy as np
      import warnings
      
      plt.rcParams['font.sans-serif'] = ['SimHei'] # 解決matplotlib中文亂碼問(wèn)題
      plt.rcParams['axes.unicode_minus'] = False # 解決matplotlib負(fù)號(hào)顯示問(wèn)題
      warnings.filterwarnings('ignore')
      
      # 設(shè)置中心點(diǎn)在南極點(diǎn)的正射投影
      crs = '+proj=ortho +lon_0=0 +lat_0=-90'
      
      # 構(gòu)建經(jīng)度線并設(shè)置對(duì)應(yīng)經(jīng)緯度的地理坐標(biāo)系
      lng_lines = gpd.GeoDataFrame({
          'geometry': [LineString([[lng, -90], [lng, -78]]) for lng in np.arange(10, 220, 210 / 38)]}, 
          crs='EPSG:4326')
      
      # 構(gòu)建緯度線并設(shè)置為對(duì)應(yīng)經(jīng)緯度的地理坐標(biāo)系
      lat_lines = gpd.GeoDataFrame({
          'geometry': [LineString([[lng, lat] for lng in range(10, 220)]) for lat in range(-90, -79, 2)]}, 
          crs='EPSG:4326')

      構(gòu)造好數(shù)據(jù)之后,將經(jīng)線與緯線對(duì)應(yīng)的GeoDataFrame轉(zhuǎn)換到設(shè)置好的「正射投影」crs上,再作為不同圖層進(jìn)行疊加繪制:

      Python怎么實(shí)現(xiàn)數(shù)據(jù)可視化分析38個(gè)城市的居住自由指數(shù)

      按照前面推斷出的規(guī)則來(lái)偽造示例數(shù)據(jù),并對(duì)偽造過(guò)程中的不合理數(shù)據(jù)進(jìn)行修正:

      def fake_index(value):
          
          fake = []
          fake.append(value+np.random.uniform(5, 10))
          fake.append(value-np.random.uniform(5, 10))
          
          return np.random.choice(fake, size=2, replace=False).tolist()
      
      data['購(gòu)房自由指數(shù)'], data['租房自由指數(shù)'] = list(zip(*data['居住自由指數(shù)'].apply(fake_index)))
      
      # 修正偽造數(shù)據(jù)中大于100和小于0的情況
      data.loc[:, '居住自由指數(shù)':] = data.loc[:, '居住自由指數(shù)':].applymap(lambda v: 100 if v > 100 else v)
      data.loc[:, '居住自由指數(shù)':] = data.loc[:, '居住自由指數(shù)':].applymap(lambda v: 0 if v < 0 else v)
      data.head()

      Python怎么實(shí)現(xiàn)數(shù)據(jù)可視化分析38個(gè)城市的居住自由指數(shù)

      接下來(lái)我們就來(lái)為每個(gè)指標(biāo)構(gòu)造線與散點(diǎn)部分的矢量數(shù)據(jù),并在統(tǒng)一轉(zhuǎn)換坐標(biāo)參考系到「正射投影」之后疊加到之前的圖像上:

      # 為每個(gè)城市生成1條經(jīng)線
      lng_lines = gpd.GeoDataFrame({
          'geometry': [LineString([[lng, -90], [lng, -78]]) for lng in np.arange(10, 220, 210 / data.shape[0])]}, 
          crs='EPSG:4326')
      
      # 居住自由指數(shù)對(duì)應(yīng)的折線
      line1 = gpd.GeoDataFrame({
          'geometry': [LineString([(lng, lat) for lng, lat in zip(np.arange(10, 220, 210 / data.shape[0]),
                                                                  data['居住自由指數(shù)_映射值'])])]}, 
          crs='EPSG:4326')
      
      # 居住自由指數(shù)對(duì)應(yīng)的折線上的散點(diǎn)
      scatter1 = gpd.GeoDataFrame({
          'geometry': [Point(lng, lat) for lng, lat in zip(np.arange(10, 220, 210 / data.shape[0]),
                                                           data['居住自由指數(shù)_映射值'])]}, crs='EPSG:4326')
      
      # 購(gòu)房自由指數(shù)對(duì)應(yīng)的折線
      line2 = gpd.GeoDataFrame({
          'geometry': [LineString([(lng, lat) for lng, lat in zip(np.arange(10, 220, 210 / data.shape[0]),
                                                                  data['購(gòu)房自由指數(shù)_映射值'])])]}, 
          crs='EPSG:4326')
      
      # 購(gòu)房自由指數(shù)對(duì)應(yīng)的折線上的散點(diǎn)
      scatter2 = gpd.GeoDataFrame({
          'geometry': [Point(lng, lat) for lng, lat in zip(np.arange(10, 220, 210 / data.shape[0]),
                                                           data['購(gòu)房自由指數(shù)_映射值'])]}, crs='EPSG:4326')
      
      
      # 租房自由指數(shù)對(duì)應(yīng)的折線
      line3 = gpd.GeoDataFrame({
          'geometry': [LineString([(lng, lat) for lng, lat in zip(np.arange(10, 220, 210 / data.shape[0]),
                                                                  data['租房自由指數(shù)_映射值'])])]}, 
          crs='EPSG:4326')
      
      # 租房自由指數(shù)對(duì)應(yīng)的折線上的散點(diǎn)
      scatter3 = gpd.GeoDataFrame({
          'geometry': [Point(lng, lat) for lng, lat in zip(np.arange(10, 220, 210 / data.shape[0]),
                                                           data['租房自由指數(shù)_映射值'])]}, crs='EPSG:4326')
      
                                   
      fig, ax = plt.subplots(figsize=(8, 8))
      
      # 繪制經(jīng)度線與緯度線
      ax = lng_lines.to_crs(crs).plot(ax=ax, linewidth=0.4, edgecolor='lightgrey')
      ax = lat_lines.to_crs(crs).plot(ax=ax, linewidth=0.75, edgecolor='grey', alpha=0.8)
      ax = line1.to_crs(crs).plot(ax=ax, color='black', linewidth=1)
      ax = scatter1.to_crs(crs).plot(ax=ax, color='black', markersize=12)
      ax = line2.to_crs(crs).plot(ax=ax, color='#00CED1', linewidth=0.6)
      ax = scatter2.to_crs(crs).plot(ax=ax, color='#00CED1', markersize=4)
      ax = line3.to_crs(crs).plot(ax=ax, color='lightgrey', linewidth=0.6)
      ax = scatter3.to_crs(crs).plot(ax=ax, color='lightgrey', markersize=4)
      ax.axis('off'); # 關(guān)閉坐標(biāo)軸
      
      fig.savefig('圖11.png', dpi=500, inches_bbox='tight', inches_pad=0)

      Python怎么實(shí)現(xiàn)數(shù)據(jù)可視化分析38個(gè)城市的居住自由指數(shù)

      Python怎么實(shí)現(xiàn)數(shù)據(jù)可視化分析38個(gè)城市的居住自由指數(shù)

      那么接下來(lái)我們要做的事就so easy了,只需要分別得到兩者去除重疊面后,剩余的部分,以對(duì)應(yīng)的填充色彩疊加繪制在圖11的圖像上就可以啦~,利用geopandas中的difference即可輕松實(shí)現(xiàn):

      fig, ax = plt.subplots(figsize=(8, 8))
      
      # 繪制經(jīng)度線與緯度線
      ax = lng_lines.to_crs(crs).plot(ax=ax, linewidth=0.4, edgecolor='lightgrey')
      ax = lat_lines.to_crs(crs).plot(ax=ax, linewidth=0.75, edgecolor='grey', alpha=0.8)
      ax = line1.to_crs(crs).plot(ax=ax, color='black', linewidth=1)
      ax = scatter1.to_crs(crs).plot(ax=ax, color='black', markersize=12)
      ax = line2.to_crs(crs).plot(ax=ax, color='#00CED1', linewidth=0.6)
      ax = scatter2.to_crs(crs).plot(ax=ax, color='#00CED1', markersize=4)
      ax = line3.to_crs(crs).plot(ax=ax, color='lightgrey', linewidth=0.6)
      ax = scatter3.to_crs(crs).plot(ax=ax, color='lightgrey', markersize=4)
      ax = polygon1.difference(polygon2).plot(ax=ax, color='#00CED1', alpha=0.2)
      polygon2.difference(polygon1).plot(ax=ax, color='lightgrey', alpha=0.6)
      ax.axis('off'); # 關(guān)閉坐標(biāo)軸
      
      fig.savefig('圖13.png', dpi=500, inches_bbox='tight', inches_pad=0)

      Python怎么實(shí)現(xiàn)數(shù)據(jù)可視化分析38個(gè)城市的居住自由指數(shù)

      到此,關(guān)于“Python怎么實(shí)現(xiàn)數(shù)據(jù)可視化分析38個(gè)城市的居住自由指數(shù)”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!


      當(dāng)前文章:Python怎么實(shí)現(xiàn)數(shù)據(jù)可視化分析38個(gè)城市的居住自由指數(shù)
      路徑分享:http://www.ef60e0e.cn/article/gjocde.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        阳高县| 七台河市| 漳浦县| 策勒县| 明星| 通河县| 大英县| 会宁县| 海淀区| 沽源县| 义乌市| 莱州市| 云阳县| 伊川县| 武安市| 乌鲁木齐县| 余姚市| 屏山县| 万载县| 汪清县| 龙岩市| 泸西县| 蒲城县| 荆门市| 湘阴县| 永嘉县| 威海市| 子长县| 泸西县| 兴仁县| 彩票| 华蓥市| 沂源县| 韶关市| 五峰| 苗栗市| 江北区| 溆浦县| 台东市| 泰宁县| 广宗县|