簡體   English   中英

基於數據框列的 pyplot 圖中的線寬

[英]Line thickness in pyplot graph based on a dataframe column

首先,數據框:

日期 類別 12MKG 數量
202001 貓1 0.8947368 38.0
202002 貓1 0.8695652 46.0
202003 貓1 0.8913044 46.0
202004 貓1 0.88372093 43.0
202005 貓1 0.8913044 46.0
202006 貓1 0.8888889 45.0
202007 貓1 0.8780488 41.0
202008 貓1 0.925 40.0
202009 貓1 0.8684211 38.0
202010 貓1 0.76744187 43.0
202011 貓1 0.7111111 45.0
202012 貓1 0.6888889 45.0
202101 貓1 0.7083333 48.0
202102 貓1 0.73333335 45.0
202103 貓1 0.74 50.0
202104 貓1 0.71428573 56.0
202105 貓1 0.7241379 58.0
202106 貓1 0.7258065 62.0
202107 貓1 0.71875 64.0
202001 貓2 0.6244344 221.0
202002 貓2 0.6136364 220.0
202003 貓2 0.61085975 221.0
202004 貓2 0.6028708 209.0
202005 貓2 0.63013697 219.0
202006 貓2 0.6034483 232.0
202007 貓2 0.5914894 235.0
202008 貓2 0.59322035 236.0
202009 貓2 0.6008584 233.0
202010 貓2 0.5903614 249.0
202011 貓2 0.5836735 245.0
202012 貓2 0.57377046 244.0
202101 貓2 0.5795918 245.0
202102 貓2 0.56666666 270.0
202103 貓2 0.557971 276.0
202104 貓2 0.548951 286.0
202105 貓2 0.5270758 277.0
202106 貓2 0.53985506 276.0
202107 貓2 0.53488374 258.0
202001 貓3 0.426 500.0
202002 貓3 0.40963855 498.0
202003 貓3 0.40365112 493.0
202004 貓3 0.41129032 496.0
202005 貓3 0.4144869 497.0
202006 貓3 0.4 500.0
202007 貓3 0.39478958 499.0
202008 貓3 0.4137255 510.0
202009 貓3 0.4035433 508.0

我想創建一個折線圖。 我想要每個類別一行,在 x 軸上我想要日期,在 y 軸上是 12MKG。 我還希望每一行都有不同的顏色,這是我迄今為止所管理的(在@Piotr Nowakowski 的支持下)。

import matplotlib.pylab as pl
import matplotlib.pyplot as plt

labels = set(df['categorie'].values)
colors = pl.cm.jet(np.linspace(0,1,len(labels)))
for key, color in zip(labels, range(len(labels))):
    data_x = df.loc[df['categorie']==key]['date']
    data_y = df.loc[df['categorie']==key]['12MKG']
    plt.plot(data_x, data_y, color=colors[color], label=key)
plt.legend()
plt.show()

現在我希望圖中的線條具有不同的粗細,粗細隨着數量列的增加而增加。 線條粗細可以根據每個日期的數量而變化,也可以根據最后一個數量值每條線一個粗細,在這種情況下基於日期 == 202107。

我想出了這樣的事情:

import matplotlib.pylab as pl
import matplotlib.pyplot as plt

labels = set(df['categorie'].values)
colors = pl.cm.jet(np.linspace(0,1,len(labels)))
width_lines = df.amount.values
for key, color, width in zip(labels, range(len(labels)), width_lines):
    data_x = df.loc[df['categorie']==key]['date']
    data_y = df.loc[df['categorie']==key]['12MKG']
    width = df.loc[df['categorie']==key]['amount']
    width = sum(width)
    plt.plot(data_x, data_y, color=colors[color], label=key, linewidth=width/100)
plt.legend()
plt.show()

問題是我不確定金額值的范圍是多少。 如果簡單除法與您的情況不符,您可以嘗試先匯總所有值,然后調整范圍。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM