第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用seaborn散點圖截斷Y軸值

使用seaborn散點圖截斷Y軸值

波斯汪 2023-10-18 21:23:15
我在繪制 Y 軸值范圍從 1 到 20+ 百萬的大型 CSV 文件時遇到問題。我現(xiàn)在面臨兩個問題。Y 軸沒有顯示它應(yīng)該顯示的所有值。使用原始數(shù)據(jù)時,最多顯示600萬條,而不是顯示全部數(shù)據(jù)最多2000萬條。在我下面放置的示例數(shù)據(jù)(較小的數(shù)據(jù))中,它僅顯示第一個 Y 軸值,不顯示任何其他值。在標(biāo)簽部分中,由于我使用了色調(diào)和樣式=名稱,因此“名稱”顯示為標(biāo)簽標(biāo)題和內(nèi)部項目。問題:誰能給我一個示例或幫助我回答如何顯示所有 Y 軸值?我該如何修復(fù)它以便所有 Y 值都顯示出來?如何在不刪除散點的形狀和顏色的情況下刪除標(biāo)簽部分下的“名稱”?(請讓我知道是否存在任何來源,或者這個問題在其他帖子上得到了回答,但沒有將其標(biāo)記為重復(fù)。如果我有任何需要解決的語法/拼寫問題,也請告訴我。謝謝?。┠梢栽谙旅嬲业轿矣脕砝L制圖表和示例數(shù)據(jù)的函數(shù)。def test_graph (file_name):    data_file = pd.read_csv(file_name, header=None, error_bad_lines=False, delimiter="|", index_col = False, dtype='unicode')    data_file.rename(columns={0: 'name',                              1: 'date',                              2: 'name3',                              3: 'name4',                              4: 'name5',                              5: 'ID',                              6: 'counter'}, inplace=True)    data_file.date = pd.to_datetime(data_file['date'], unit='s')        norm = plt.Normalize(1,4)    cmap = plt.cm.tab10    df = pd.DataFrame(data_file)     # Below creates and returns a dictionary of category-point combinations,    # by cycling over the marker points specified.       points = ['o', 'v', '^', '<', '>', '8', 's', 'p', 'H', 'D', 'd', 'P', 'X']    mult = len(df['name']) // len(points) + (len(df['name']) % len(points) > 0)    markers = {key:value for (key, value)               in zip(df['name'], points * mult)} ; markers       sc = sns.scatterplot(data = df, x=df['date'], y=df['counter'], hue = df['name'], style = df['name'], markers = markers, s=50)    ax.set_autoscaley_on(True)                     ax.set_title("TEST", size = 12, zorder=0)                      plt.legend(title="Names", loc='center left', shadow=True, edgecolor = 'grey', handletextpad = 0.1, bbox_to_anchor=(1, 0.5))                            
查看完整描述

1 回答

?
白衣染霜花

TA貢獻1796條經(jīng)驗 獲得超10個贊

首先,對您的帖子進行一些改進:您缺少導(dǎo)入語句


import pandas as pd

import matplotlib.pyplot as plt

from matplotlib import ticker

import seaborn as sns

線路


df = pd.DataFrame(data_file)

不是必需的,因為data_file已經(jīng)是一個 DataFrame 了。線條


points = ['o', 'v', '^', '<', '>', '8', 's', 'p', 'H', 'D', 'd', 'P', 'X']

mult = len(df['name']) // len(points) + (len(df['name']) % len(points) > 0)

markers = {key:value for (key, value)

           in zip(df['name'], points * mult)}

不要points像您期望的那樣循環(huán),也許可以按照此處的itertools建議使用。另外,設(shè)置 yticks 像


ax.yaxis.set_major_locator(ticker.MultipleLocator(100))

如果您的數(shù)據(jù)范圍為 0 到 2000 萬,則每 100 可能太多,請考慮將 100 替換為 1000000。


我能夠重現(xiàn)你的第一個問題。使用df.dtypes我發(fā)現(xiàn)該列counter存儲為 type object。添加行


df['counter']=df['counter'].astype(int)

為我解決了你的第一個問題。不過,我無法重現(xiàn)您的第二個問題。對于我來說,結(jié)果圖是這樣的:

https://img1.sycdn.imooc.com/652fdc8c0001c8a117260932.jpg

您是否嘗試將所有軟件包更新到最新版本?


編輯:作為您評論的后續(xù)內(nèi)容,您還可以通過替換 1 來調(diào)整圖中的 xticks 數(shù)量


ax.xaxis.set_major_locator(ticker.MultipleLocator(1))

更高的數(shù)字,比如 10。結(jié)合我的所有建議并刪除看似不必要的函數(shù)定義,我的代碼版本如下所示:


import pandas as pd

import matplotlib.pyplot as plt

from matplotlib import ticker

import seaborn as sns

import itertools


fig = plt.figure()

ax  = fig.add_subplot()


df = pd.read_csv(

    'data.csv',

    header          = None,

    error_bad_lines = False,

    delimiter       = "|",

    index_col       = False,

    dtype           = 'unicode')

df.rename(columns={0: 'name',

                   1: 'date',

                   2: 'name3',

                   3: 'name4',

                   4: 'name5',

                   5: 'ID',

                   6: 'counter'}, inplace=True)


df.date = pd.to_datetime(df['date'], unit='s')

df['counter'] = df['counter'].astype(int)


points  = ['o', 'v', '^', '<', '>', '8', 's', 'p', 'H', 'D', 'd', 'P', 'X']

markers = itertools.cycle(points) 

markers = list(itertools.islice(markers, len(df['name'].unique())))


sc = sns.scatterplot(

    data    = df,

    x       = 'date',

    y       = 'counter',

    hue     = 'name',

    style   = 'name',

    markers = markers,

    s       = 50)           


ax.set_title("TEST", size = 12, zorder=0)             

ax.legend(

    title          = "Names",

    loc            = 'center left',

    shadow         = True,

    edgecolor      = 'grey',

    handletextpad  = 0.1,

    bbox_to_anchor = (1, 0.5))             

           

ax.xaxis.set_major_locator(ticker.MultipleLocator(10))

ax.yaxis.set_major_locator(ticker.MultipleLocator(1000000))             

ax.minorticks_off()

      

ax.set_xlabel("Dates", fontsize = 12, labelpad = 7)

ax.set_ylabel("Counter", fontsize = 12)

ax.grid(axis='y', color='0.95')


fig.autofmt_xdate(rotation = 30)  

plt.gcf().subplots_adjust(bottom=0.15)   

plt.show()



查看完整回答
反對 回復(fù) 2023-10-18
  • 1 回答
  • 0 關(guān)注
  • 178 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號