導航:首頁 > 編程語言 > python中如何顯示圖例

python中如何顯示圖例

發布時間:2023-10-18 02:03:53

❶ 見圖。python matplotlib 子圖圖例不顯示完全。怎麼解決

ax[0].legend(),ax[1].legend(),直接使用plt.legend()一般只會出現一個

❷ python中圖例的位置怎麼手動調整

1.最近遇到一個問題,關於圖例legend如何畫在圖外的問題,並以適合的比例顯示出來。

2.首先傳統的做法如下,這種方式並不能滿足我的要求,而且是顯示在圖內。

ax1.legend(loc='center left', bbox_to_anchor=(0.2, 1.12),ncol=3)1

loc表示圖例的位置,有多種形式:

『North』 圖例標識放在圖頂端
『South』 圖例標識放在圖底端
『East』 圖例標識放在圖右方
『West』 圖例標識放在圖左方
『NorthEast』 圖例標識放在圖右上方(默認)
『NorthWest 圖例標識放在圖左上方
『SouthEast』 圖例標識放在圖右下角
『SouthWest』 圖例標識放在圖左下角12345678

有人說簡單,有相同的方式,如下經測試不行,可能是本人用的python版本不行,所用的方式就是和前面一樣,採用如下的方式來替換上面的legend位置。

『NorthOutside』 圖例標識放在圖框外側上方
『SouthOutside』 圖例標識放在圖框外側下方
『EastOutside』 圖例標識放在圖框外側右方
『WestOutside』 圖例標識放在圖框外側左方
『NorthEastOutside』 圖例標識放在圖框外側右上方
『NorthWestOutside』 圖例標識放在圖框外側左上方
『SouthEastOutside』 圖例標識放在圖框外側右下方
『SouthWestOutside』 圖例標識放在圖框外側左下方
(以上幾個將圖例標識放在框圖外)
『Best』 圖標標識放在圖框內不與圖沖突的最佳位置
『BestOutside』 圖標標識放在圖框外使用最小空間的最佳位置1234567891011

bbox_to_anchor:表示legend的位置,前一個表示左右,後一個表示上下。當使用這個參數時。loc將不再起正常的作用,ncol=3表示圖例三列顯示。

3.有人說要解決這個問題可以採用對坐標軸放大或是縮小的方式,經本人測試可以行,但是,放大縮小的比率不讓人滿意,且很難控制到適合的位置。有興趣可以參考鏈接,最終得出此方法不行。

4.那麼就沒有辦法了嗎?NO.NO,請看下面,最終完成如下。

這就是本人要的效果,不廢話,具體做法如下

box = ax1.get_position()
ax1.set_position([box.x0, box.y0, box.width , box.height* 0.8])12

首先按上面的方式,如果你想將圖例放上面就box.height*0.8,放右邊就box.width*0.8其它方式一樣。同時配合下面來使用。

ax1.legend(loc='center left', bbox_to_anchor=(0.2, 1.12),ncol=3)1

主要是bbox_to_anchor的使用,自己可以修改參數試下,good luck for you.

閱讀全文

版權聲明:原創文章,未經博主

❸ python matlibplot 怎樣畫圖例

用於添加圖例的函數是plt.legend(),我們通過例子來對其進行介紹。

%matplotlib inline
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np

#多數據並列柱狀圖
mpl.rcParams["font.sans-serif"]=["SimHei"]
mpl.rcParams["axes.unicode_minus"]=False
x = np.arange(6)
y1 = [23,5,14,27,18,14]
y2 = [10,27,25,18,23,16]
tick_label = ["A","B","C","D","E","F"]
bar_width = 0.35
plt.bar(x,y1,bar_width,align="center",label="班級A",alpha=0.5)
plt.bar(x+bar_width,y2,bar_width,align="center",label="班級B",alpha=0.5)
plt.xlabel("成績等級")
plt.ylabel("人數")
plt.xticks(x+bar_width/2,tick_label)

plt.legend(bbox_to_anchor=(1,1),#圖例邊界框起始位置
loc="upper right",#圖例的位置
ncol=1,#列數
mode="None",#當值設置為「expend」時,圖例會水平擴展至整個坐標軸區域
borderaxespad=0,#坐標軸和圖例邊界之間的間距
title="班級",#圖例標題
shadow=False,#是否為線框添加陰影
fancybox=True)#線框圓角處理參數
plt.show()

效果如圖所示

❹ 數據蛙-Python進階

這是漫長的一周,本周完成了Python的進階模塊,主要是pandas、numpy、matplotlib、seaborn、pyecharts這些模塊的學習以及一個實際的案例:商品銷售情況分析,之前一直覺得課程難度不夠,但到這一周難度就大大提高了。尤其是案例練習中的RFM模型和用戶生命周期建立,看懂不難但是自差首己寫一直出錯,在不斷出錯不斷嘗試中知識得到了積累,另外可視化部分沒有什麼練習題,希望後面可以加上一些這方面的練習,接下來分模塊來總結一下學習的內容。

重新設置索引:df.set_index()

Series格式轉換為DataFrame:df.to_frame()

文件讀取:pd.read_csv(filepath, header = 0,skiprows=[1,2]) 

使用位禪慶源置做索引:df.loc[0]        使用列表做索引:df.loc[[0,1,2]]

使用切片做索引:df.loc[0:4]        使用bool類型索引:df[df['年齡']>30]

loc 是基於索引值的,切片是左閉右閉的

iloc 是基於位置的,切片是左閉右開的

修改列索引:df.rename(columns={'姓名':'name', '年齡':'age'},inplace=True)

替換一個值:df.replace({'name':{'小明':'xiaoming'}},inplace=True)

對數據進行排序:df.sort_values('age')

累加求和:df.cumsum(0)

刪除列:del df['player']         刪除行:df.drop(labels=0) labels 是行列的名字

數據拼接:pd.concat([left,right],axis=1)

# 指定列進行關聯,默認是 inner join     result = pd.merge(left,right,on='key')

#多個關聯條件:result = pd.merge(left, right, on=['key1', 'key2'])

#左連接:result = pd.merge(left, right, how='left', on=['key1', 'key2'])

# 列名不一樣的關聯:pd.merge(left,right,left_on = ['key1','key2'],right_on = ['key3','key4'])

#單個分組:groups = df.groupby('district')

# 作用多個聚合函數:groups.agg([np.mean,np.sum,np.std])

# 針對具體列聚合 groups.age.agg([np.mean,np.sum,np.std])

# 不同列不同聚合函數 groups.agg({"age":np.mean,"novip_buy_times":np.sum})

分組後該列值求和顯示:groups['vip_buy_times'].transform('sum')

通常用於求佔比:transform(lambda x: x /sum(x))

# 填充指定值:np.full([3,4],1)

# 起始為10,5為步長,30為結賀態尾取不到:np.arange(10, 30, 5)

#隨機矩陣:np.random.random((2,3))

# 平均劃分:np.linspace( 0, 2*pi, 100 )

# 類型及轉換:vector.astype('float')

# 多維變一維:matrix.ravel()

# 矩陣的擴展:a = np.arange(0, 40, 10)    b = np.tile(a, (3, 5))    # 行變成3倍,列變成5倍

# 水平拼接:np.hstack((a,b))  豎直拼接:np.vstack((a,b))

# 豎直分割:np.hsplit(a,3)    #水平分割:np.vsplit(a,3)

8. Select the data in rows [3, 4, 8] and in columns ['animal', 'age'].

A:df.loc[df.index[[3,4,8]],['animal','age']]

行採用位置,列採用普通索引,這里利用index函數將位置變化為具體的普通索引,再利用loc函數

19. The 'priority' column contains the values 'yes' and 'no'. Replace this column with a column of boolean values: 'yes' should be True and 'no' should be False

A1:df['priority'].replace(['yes','no'],[True,False],inplace=True) 用replace函數替換

A2:df['priority'] = df['priority'].map({'yes': True, 'no': False}) 用map函數替換

最大最小值的索引:df.idxmax、df.idxmin

找出最大最小的前N個數:nlargest()和nsmallest() 

將原表分組 並設置分段區間 pd.cut(df['A'], np.arange(0, 101, 10))

resample函數 日期重采樣:s.resample('M').mean()

TimeGrouper 重組:s.groupby(pd.TimeGrouper('4M')).idxmax()

split 分割函數:temp = df['From_To'].str.split('_', expand=True) True為DataFrame

兩個DataFrame拼接用join:df = df.join(temp)

import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei'] #用來正常顯示中文標簽

plt.rcParams['axes.unicode_minus']=False #用來正常顯示負號

%matplotlib inline 直接顯示

折線圖:plt.plot(x,y,color = 'r')

柱狀圖:plt.bar(x,y)  plt.barh(x,y) 多個bar x設置不同 堆積圖 bottom設置不同

散點圖:plt.scatter(x, y, c=colors, alpha=0.5, s = area)

直方圖:plt.hist(a,bins= 20) bin代表分隔的最小單位

plt.legend() 顯示圖例

for a,b in zip(X+W[i],data[i]):

    plt.text(a,b,"%.0f"% b,ha="center",va= "bottom") 添加數據標簽

plt.annotate('注釋文本',xy=(1, np.sin(1)),xytext=(2, 0.5), fontsize=16,arrowprops=dict(arrowstyle="->")) 添加註釋文本

plt.xlabel("Group") x軸標題

plt.ylabel("Num") y軸標題

fig, axes = plt.subplots(nrows=2, ncols=2,facecolor='darkslategray')  繪制多個圖形

axes[0,0] axes[0,1] axes[1,0] axes[1,1]

pylab.rcParams['figure.figsize'] = (10, 6) # 調整圖片大小

動態展示圖表

from pyecharts.charts import Bar

from pyecharts import options as opts

** pyecharts 繪圖的五個步驟:**

創建圖形對象:bar = Bar()

添加繪圖數據:bar.add_xaxis(["襯衫", "毛衣", "領帶", "褲子", "風衣", "高跟鞋", "襪子"])

                         bar.add_yaxis("商家A", [114, 55, 27, 101, 125, 27, 105])

                         bar.add_yaxis("商家B", [57, 134, 137, 129, 145, 60, 49])

配置系列參數:對標簽、線型等的一些設置

配置全局參數:bar.set_global_opts(title_opts=opts.TitleOpts(title="銷售情況"))

渲染圖片:生成本地 HTML 文件 bar.render("mycharts.html")  bar.render()

notebook 渲染:bar.render_notebook()

bar = (Bar()

    .add_xaxis(["襯衫", "毛衣", "領帶", "褲子", "風衣", "高跟鞋", "襪子"])

    .add_yaxis("商家A", [114, 55, 27, 101, 125, 27, 105])

    .add_yaxis("商家B", [57, 134, 137, 129, 145, 60, 49])

    .set_global_opts(title_opts=opts.TitleOpts(title="某商場銷售情況"))

)

bar.render_notebook()

柱狀圖:Bar()

條形圖:bar.reversal_axis() #翻轉XY軸,將柱狀圖轉換為條形圖

折線圖:from pyecharts.charts import Line  line=Line()

餅圖:from pyecharts.charts import Page, Pie    Pie() 

轉換日期類型:df['order_dt']=pd. to_datetime (df.order_dt,format="%Y%m%d")

將日期轉換為月為單位:df['month']=df.order_dt.values. astype('datetime64[M]') 所有日期顯示為當月第一天

去除日期單元值:order_diff/ np.timedelta64(1,'D')

過濾部分極值:grouped_user.sum() .query('order_procts<100') .order_amount

數據透視表:rfm=df.pivot_table( index ='user_id', values =['order_procts','order_amount'], aggfunc ={'order_amount':'sum','order_procts':'sum'})

map() 方法是pandas.series.map()方法, 對DF中的元素級別的操作, 可以對df的某列或某多列

applymap(func) 也是DF的屬性, 對整個DF所有元素應用func操作

purchase_r=pivoted_counts.applymap(lambda x: 1 if x>1 else np.NaN if x==0 else 0)

apply(func) 是DF的屬性, 對DF中的行數據或列數據應用func操作,也可用於Series

apply(lambda x:x.cumsum()/x.sum())    累計佔比

apply(lambda x:x/x.sum(),axis=0)     每一列中每行數據佔比

下周開始進入數據分析思維的課程,很期待後面的課程以及項目,加油!

❺ 如何在python界面顯示圖片

wxpython:
# 使用wx.Image得到對象
bmp = wx.Image('bitmaps/image.bmp', wx.BITMAP_TYPE_BMP).ConvertToBitmap()
gif = wx.Image('bitmaps/image.gif', wx.BITMAP_TYPE_GIF).ConvertToBitmap()
png = wx.Image('bitmaps/image.png', wx.BITMAP_TYPE_PNG).ConvertToBitmap()
jpg = wx.Image('bitmaps/image.jpg', wx.BITMAP_TYPE_JPEG).ConvertToBitmap()

# 把它們顯示出來
pos = 10
wx.StaticBitmap(frame, -1, bmp, (10, pos), (bmp.GetWidth(), bmp.GetHeight()))

pos = pos + bmp.GetHeight() + 10
wx.StaticBitmap(frame, -1, gif, (10, pos), (gif.GetWidth(), gif.GetHeight()))

pos = pos + gif.GetHeight() + 10
wx.StaticBitmap(panel, -1, png, (10, pos), (png.GetWidth(), png.GetHeight()))

pos = pos + png.GetHeight() + 10
wx.StaticBitmap(frame, -1, jpg, (10, pos), (jpg.GetWidth(), jpg.GetHeight()))

具體的請根據你的實際情況修改,最好去http://www.wxpython.org/download.php#binaries
下載wxpython和wxpython demo看看,這個demo很強大的。

❻ Python matplotlib用繪制雷達圖實戰案例

import pandasas pd

import matplotlib.pyplotas plt

import numpyas np

plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']

plt.rcParams['axes.unicode_minus'] =False

data = pd.read_csv(r'D:\bigData\radarMap.csv')

data = data.dropna(axis=1)

data = data.set_index('性能評價指標')

data = data.T

data.index.name ='品牌'

def plot_radar(data, feature):

columns = ['動力性', '燃油經濟性', '制動性', '操控穩定性', '行駛平順性', '通過性', '安全性', '環保性', '方便性', '舒適性', '經濟性', '容量性']

colors = ['r', 'g', 'y']

# 設置雷達圖的角度,用於平分切開一明旅個平面

    # linspace(1,10,x) 創建1-10的等差數組,個數為 x,默認50個;endpoint參數指定是否包含終值,默認值為True,即包含終值。

    angles = np.linspace(0.1 * np.pi, 2.1 * np.pi, len(columns), endpoint=False)

# 使雷達圖封閉起來

    angles = np.concatenate((angles, [angles[0]]))

# figsize:指定figure的寬和高,單位為英寸;

    figure = plt.figure(figsize=(6, 6))

# 設置為極坐標格式;subplot(nrows,ncols,sharex,sharey,subplot_kw,**fig_kw)創建單個子圖,下面兩句效果相同

    ax = figure.add_subplot(111, polar=True)

for i, cin enumerate(feature):

stats = data.loc[c]

stats = np.concatenate((stats, [stats[0]]))

ax.plot(angles, stats, '-', linewidth=2, c=colors[i], label=str(c))

ax.fill(angles, stats, color=colors[i], alpha=0.75)

# bbox_to_anchor這個參數,可以把圖例放在圖外面

    # bbox_to_anchor:表示legend的位置,前一個表示左右,後一個表示上下。

    # 當使用這個參數時。loc將不再起正常的作用,ncol=3表示圖例三列顯示。

    ax.legend(loc=4, bbox_to_anchor=(1.15, -0.07))

# 設置極軸范圍

    ax.set_ylim(0, 10)

# ax.set_yticklabels([2, 4, 6, 8, 10])

    # 添加每個特質的標簽

    columns = np.concatenate((columns, [columns[0]]))

ax.set_thetagrids(angles *180 / np.pi, columns, fontsize=12)

# 添加標題

    plt.title('汽車性能州纖指標雷達圖')

plt.show()

return figure

figure = plot_radar(data, ['A品牌', 'B品牌', 'C品牌激跡凳'])

閱讀全文

與python中如何顯示圖例相關的資料

熱點內容
模擬電子技術第四版pdf 瀏覽:959
解壓車貸後gps怎麼找 瀏覽:350
源碼資料庫怎麼配備 瀏覽:136
知乎程序員小灰 瀏覽:574
新概念英語第一冊書pdf 瀏覽:5
安卓ans文件怎麼打開 瀏覽:893
選擇題改進分治演算法的方法有 瀏覽:108
下載雲伺服器有什麼好處 瀏覽:23
江蘇機架式伺服器雲主機 瀏覽:411
linux補全命令 瀏覽:514
我要打命令 瀏覽:970
御人pdf 瀏覽:390
小米手機怎麼發送文件夾用qq 瀏覽:917
找人一起玩用什麼app好 瀏覽:398
程序員最煩的4件事 瀏覽:485
怎麼查ice伺服器 瀏覽:760
excel加密不可以復制 瀏覽:308
py編譯器的鍵盤輸入在哪 瀏覽:226
雲伺服器和深度學習 瀏覽:102
交叉編譯標准輸出 瀏覽:24