<center id="qkqgy"><optgroup id="qkqgy"></optgroup></center>
  • <menu id="qkqgy"></menu>
    <nav id="qkqgy"></nav>
    <xmp id="qkqgy"><nav id="qkqgy"></nav>
  • <xmp id="qkqgy"><menu id="qkqgy"></menu>
    <menu id="qkqgy"><menu id="qkqgy"></menu></menu>
    <tt id="qkqgy"><tt id="qkqgy"></tt></tt>

  • Python 數據可視化

    Python提供了多個用于數據可視化的工具和庫。其中最常用的包括:

    1. Matplotlib:Matplotlib 是一個用于繪制二維圖形的 Python
    庫。它提供了廣泛的繪圖選項,可以幫助您創建線圖、散點圖、柱狀圖、餅圖、等高線圖、3D 圖形等。

    2. Seaborn:Seaborn 是基于 Matplotlib 的圖形可視化庫,它主要用于繪制統計分析結果的圖表和數據集。相比于 matplotlib
    包,seaborn 包提供了更為美觀、更為精美的可視化效果。

    3. Plotly:Plotly 是一個交互式數據可視化庫,在數據科學領域十分受歡迎。它支持大量的 2D/3D
    圖表類型,并且具備強大的交互元素如縮放、平移、懸停等等。

    4. Bokeh:Bokeh 是一個面向現代網頁的交互式可視化工具。它支持多種語言(Python、R 和 Julia)并非常適用于大規模數據集的可視化展示。

    5. Pandas data visualization:Pandas 數據可視化是 Pandas 庫內置的一種數據可視化工具,它可以促使你通過
    DataFrames 和 Series 數據結構,快速生成多樣性的圖表。?

    這些庫和工具都有不同的功能和應用場景,可以根據具體需求選擇合適的工具進行數據可視化。

    下面是一些使用不同庫進行數據可視化的示例:
    1. Matplotlib:用 Matplotlib 繪制折線圖、散點圖和柱狀圖。 ```python import matplotlib.pyplot
    as plt import numpy as np # 折線圖 x = np.arange(0, 10, 0.1) y = np.sin(x)
    plt.plot(x, y) plt.show() # 散點圖 x = np.random.rand(50) y = np.random.rand(50)
    colors = np.random.rand(50) plt.scatter(x, y, c=colors) plt.show() # 柱狀圖? x =
    ['A', 'B', 'C', 'D'] y = [3, 8, 1, 10] plt.bar(x, y) plt.show() ``` 2.
    Seaborn:在 Seaborn 中繪制散點圖和直方圖。 ```python import seaborn as sns import numpy as
    np # 散點圖 x = np.random.normal(size=100) y = np.random.normal(size=100)
    sns.scatterplot(x=x, y=y) plt.show() # 直方圖 data = np.random.normal(size=100)
    sns.histplot(data=data, kde=True) plt.show() ``` 3. Plotly:用 Plotly
    繪制交互式熱力圖和二維散點圖。 ```python import plotly.express as px import numpy as np # 熱力圖
    z = np.random.rand(10, 10) fig = px.imshow(z, color_continuous_scale='OrRd')
    fig.show() # 二維散點圖 x = np.random.rand(50) y = np.random.rand(50) colors =
    np.random.rand(50) fig = px.scatter(x=x, y=y, color=colors) fig.show() ``` 4.
    Bokeh:用 Bokeh 繪制交互式時序數據圖。 ```python from bokeh.plotting import figure,
    output_file, show import pandas as pd # 讀取數據 data =
    pd.read_csv('temperature_data.csv') x = pd.to_datetime(data['datetime']) y =
    data['temperature'] # 繪制曲線 output_file('temp_plot.html') p =
    figure(title="Temperature Data", x_axis_label='Time',
    y_axis_label='Temperature') p.line(x, y) show(p) ``` 5. Pandas 數據可視化:對 Pandas 的
    Series 和 DataFrame 對象直接調用 `plot()` 函數即可繪制不同類型的圖表,如折線圖、散點圖、柱狀圖、餅圖等。下面以折線圖為例:
    ```python import pandas as pd import numpy as np # 創建 Series 對象 dates =
    pd.date_range(start='20210101', end='20210110', periods=10) ts =
    pd.Series(np.random.randn(10), index=dates) # 繪制折線圖 ts.plot() ```
    Example 1 :散點圖、密度圖(Python)
    import numpy as np import matplotlib.pyplot as plt # 創建隨機數 n = 100000 x =
    np.random.randn(n) y = (1.5 * x) + np.random.randn(n) fig1 = plt.figure()
    plt.plot(x,y,'.r') plt.xlabel('x') plt.ylabel('y')
    plt.savefig('2D_1V1.png',dpi=600) nbins = 200 H, xedges, yedges =
    np.histogram2d(x,y,bins=nbins) # H needs to be rotated and flipped H =
    np.rot90(H) H = np.flipud(H) # 將 zeros mask Hmasked =
    np.ma.masked_where(H==0,H) # Plot 2D histogram using pcolor fig2 = plt.figure()
    plt.pcolormesh(xedges,yedges,Hmasked) plt.xlabel('x') plt.ylabel('y') cbar =
    plt.colorbar() cbar.ax.set_ylabel('Counts') plt.savefig('2D_2V1.png',dpi=600)
    plt.show()
    這段代碼的主要作用是生成 2D 直方圖,幫助我們可視化數據集中的情況。

    首先,使用 `numpy.random.randn()` 函數生成一個包含100,000個元素的隨機數數組 x,并由 y = (1.5 * x) +
    np.random.randn(n) 計算出相應的 y 值,在 plt.plot(x,y,'.r') 中繪制二維散點圖。

    接著,使用 `numpy.histogram2d()` 函數將數據劃分到網格中,并且根據各網格內數據的計數繪制顏色不同的矩形。該函數返回三個值,分別是
    H(計數)、xedges(每一列的邊界)和 yedges(每一行的邊界)。

    再之后,在 H 非 0 的區域打上背景遮罩,并通過 `pcolormesh()` 函數把這些區域的計數對應于不同顏色的矩形來展示直方圖。

    最后,增加了一些標簽、軸、顏色線條等細節,并使用 `plt.savefig()` 函數將圖片保存為文件。

    該代碼可以用于描述任何包含兩個變量的數據集,以適合于在圖像上顯示數據的形式呈現它們。

    ?

    Example 2 :雙 Y 軸(Python)
    import csv import pandas as pd import matplotlib.pyplot as plt from datetime
    import datetime data=pd.read_csv('LOBO0010-2020112014010.tsv',sep='\t')
    time=data['date [AST]'] sal=data['salinity'] tem=data['temperature
    [C]']print(sal) DAT = [] for row in time:
    DAT.append(datetime.strptime(row,"%Y-%m-%d %H:%M:%S")) #create figure fig, ax
    =plt.subplots(1) # Plot y1 vs x in blue on the left vertical axis.
    plt.xlabel("Date [AST]") plt.ylabel("Temperature [C]", color="b")
    plt.tick_params(axis="y", labelcolor="b") plt.plot(DAT, tem, "b-", linewidth=1)
    plt.title("Temperature and Salinity from LOBO (Halifax, Canada)")
    fig.autofmt_xdate(rotation=50) # Plot y2 vs x in red on the right vertical
    axis. plt.twinx() plt.ylabel("Salinity", color="r") plt.tick_params(axis="y",
    labelcolor="r") plt.plot(DAT, sal, "r-", linewidth=1) #To save your graph
    plt.savefig('saltandtemp_V1.png' ,bbox_inches='tight') plt.show() Example
    3:擬合曲線( Python) import csv import numpy as np import pandas as pd from datetime
    import datetime import matplotlib.pyplot as plt import scipy.signal as signal
    data=pd.read_csv('LOBO0010-20201122130720.tsv',sep='\t') time=data['date
    [AST]'] temp=data['temperature [C]'] datestart =
    datetime.strptime(time[1],"%Y-%m-%d %H:%M:%S") DATE,decday = [],[] for row in
    time: daterow = datetime.strptime(row,"%Y-%m-%d %H:%M:%S") DATE.append(daterow)
    decday.append((daterow-datestart).total_seconds()/(3600*24)) # First, design
    the Buterworth filter N = 2 # Filter orderWn = 0.01 # Cutoff frequency B, A =
    signal.butter(N, Wn, output='ba') # Second, apply the filter tempf =
    signal.filtfilt(B,A, temp) # Make plots fig = plt.figure() ax1 =
    fig.add_subplot(211) plt.plot(decday,temp, 'b-') plt.plot(decday,tempf,
    'r-',linewidth=2) plt.ylabel("Temperature (oC)")
    plt.legend(['Original','Filtered']) plt.title("Temperature from LOBO (Halifax,
    Canada)") ax1.axes.get_xaxis().set_visible(False) ax1 = fig.add_subplot(212)
    plt.plot(decday,temp-tempf, 'b-') plt.ylabel("Temperature (oC)")
    plt.xlabel("Date") plt.legend(['Residuals'])
    plt.savefig('tem_signal_filtering_plot.png', bbox_inches='tight') plt.show()
    代碼塊主要是使用 Python 實現了一個數字信號處理的過程,是針對來自 LOBO0010-20201122130720.tsv 數據集的處理。

    該代碼塊的任務是進行高斯濾波(Butterworth
    Filter)處理并擬合曲線,并通過可視化的方式呈現出原始數據和經過濾波處理后的信號及其差異。具體來說,使用scipy.signal.butter()
    函數設計濾波器、應用高斯濾波,然后使用matplotlib.pyplot.plot() 函數畫出圖像。此外,還使用
    matplotlib.pyplot.legend() 等函數為圖形添加標簽和文字說明。

    最后,使用 matplotlib.pyplot.savefig() 函數將生成的圖像保存到本地磁盤,并使用 matplotlib.pyplot.show()
    函數展示可視化結果。

    Example 3:擬合曲線(Python)
    import csv import numpy as np import pandas as pd from datetime import
    datetime import matplotlib.pyplot as plt import scipy.signal as signal
    data=pd.read_csv('LOBO0010-20201122130720.tsv',sep='\t') time=data['date
    [AST]'] temp=data['temperature [C]'] datestart =
    datetime.strptime(time[1],"%Y-%m-%d %H:%M:%S") DATE,decday = [],[] for row in
    time: daterow = datetime.strptime(row,"%Y-%m-%d %H:%M:%S") DATE.append(daterow)
    decday.append((daterow-datestart).total_seconds()/(3600*24)) # First, design
    the Buterworth filter N = 2 # Filter order Wn = 0.01 # Cutoff frequency B, A =
    signal.butter(N, Wn, output='ba') # Second, apply the filtertempf =
    signal.filtfilt(B,A, temp) # Make plots fig = plt.figure() ax1 =
    fig.add_subplot(211) plt.plot(decday,temp, 'b-') plt.plot(decday,tempf,
    'r-',linewidth=2) plt.ylabel("Temperature (oC)")
    plt.legend(['Original','Filtered']) plt.title("Temperature from LOBO (Halifax,
    Canada)") ax1.axes.get_xaxis().set_visible(False) ax1 = fig.add_subplot(212)
    plt.plot(decday,temp-tempf, 'b-') plt.ylabel("Temperature (oC)")
    plt.xlabel("Date") plt.legend(['Residuals'])
    plt.savefig('tem_signal_filtering_plot.png', bbox_inches='tight') plt.show()
    這段代碼主要是針對來自 LOBO0010-20201122130720.tsv 數據集的處理。它的主要任務是使用 Butterworth
    濾波器進行數字信號處理,即對溫度數據進行濾波處理,并通過可視化的方式呈現出原始數據和經過濾波處理后的信號及其差異。

    首先,根據所給的 tsv 文件,我們使用 `pandas.read_csv()` 函數讀取 csv 文件并將其加載到 data 存儲庫中。然后,使用
    `datetime.strptime()` 函數來從 data 中獲取時間戳。接著,創建一個時間序列,用于繪制 X 軸(每個時刻距離第一個時刻的秒數)。

    然后,定義了 Buterworth 濾波器的階數 N 和截止頻率 Wn,并使用 `scipy.signal.butter()`
    函數來設計(設計)濾波器。在設計完畢后,使用 `scipy.signal.filtfilt()` 函數應用該濾波器對原始數據 temp
    進行濾波,得到濾波后的結果 tempf。

    最后,使用 `plt.plot()` 繪制兩個子圖,分別表示原始溫度數據、濾波后的溫度數據和它們之間的差異(殘差)。使用 `plt.savefig()`
    函數將生成的圖像保存到本地磁盤,并使用 `matplotlib.pyplot.show()` 函數展示可視化結果。

    ?

    Example 4:三維地形(Python)
    # This import registers the 3D projection from mpl_toolkits.mplot3d import
    Axes3D from matplotlib import cbook from matplotlib import cm from
    matplotlib.colors import LightSource import matplotlib.pyplot as plt import
    numpy as np filename = cbook.get_sample_data('jacksboro_fault_dem.npz',
    asfileobj=False) with np.load(filename) as dem: z = dem['elevation'] nrows,
    ncols = z.shape x = np.linspace(dem['xmin'], dem['xmax'], ncols) y =
    np.linspace(dem['ymin'], dem['ymax'], nrows) x, y = np.meshgrid(x, y) region =
    np.s_[5:50, 5:50] x, y, z = x[region], y[region], z[region] fig, ax =
    plt.subplots(subplot_kw=dict(projection='3d')) ls = LightSource(270, 45) rgb =
    ls.shade(z, cmap=cm.gist_earth, vert_exag=0.1, blend_mode='soft') surf =
    ax.plot_surface(x, y, z, rstride=1, cstride=1, facecolors=rgb,linewidth=0,
    antialiased=False, shade=False) plt.savefig('example4.png',dpi=600,
    bbox_inches='tight') plt.show()
    這段代碼主要使用 Matplotlib 庫中的模塊 `Axes3D` 來創建和處理 3D 圖形。其任務是將樣本數據集
    jacksboro_fault_dem.npz 中的地理高度(即該點距離海平面的高度)制成 3D 表面圖。

    首先,導入所需模塊和庫并讀取數據。然后,選擇特定區域進行繪制,即選區 region 為左上角為(5,5),右下角為(50,50) 的區域。接下來,使用
    LightSource 函數實現 3D 圖形的渲染,其中的參數 elevation 是數據集的高程信息,cmap 參數表示圖像的顏色映射,vert_exag
    參數表示圖像的垂直高度系數。最后,使用 `plot_surface()` 函數畫出 3D 表面圖,并使用 `savefig()`
    函數將生成的圖像保存到本地磁盤,并使用 `show()` 函數展示可視化結果。

    需要注意的是,在此過程中,也需要對 x、y 和 z 坐標進行網格化和重采樣以制作 3D 表面圖。

    技術
    下載桌面版
    GitHub
    百度網盤(提取碼:draw)
    Gitee
    云服務器優惠
    阿里云優惠券
    騰訊云優惠券
    華為云優惠券
    站點信息
    問題反饋
    郵箱:ixiaoyang8@qq.com
    QQ群:766591547
    關注微信
    巨胸美乳无码人妻视频