[英]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.