[英]Gradient Legend Matplotlib
我是 python 的新手。 我的代碼將 csv 作為 dataframe 讀取,然后循環遍歷列並將每個列繪制為條形圖。 我想做的是向 plot 添加一個漸變圖例,范圍從藍色 alpha =0.01 到藍色 alpha =1。
代碼:
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import datetime
data = pd.read_csv("SomePath\Data.csv")
data.iloc[:, 0] = pd.to_datetime(data.iloc[:, 0])
year=pd.DatetimeIndex(data.iloc[:, 0]).year
df =pd.DataFrame(data)
X = year
for i in range(2,len(df.columns)):
Y = list(df.iloc[:, i])
plt.bar(X, Y, color='blue',alpha=0.01)
plt.title("Title")
plt.xlabel("Year")
plt.ylabel("Value")
plt.xticks(rotation = 90)
plt.xticks(np.arange(min(X),max(X)+1,1))
plt.show()
這是 plot:
您可以使用LinearSegmentedColormap創建自定義圖例:
import numpy as np
import pandas as pd
import matplotlib.colors
import matplotlib.pyplot as plt
import matplotlib.cm as cm
x = range(20)
y = np.array(range(240,260))
kwargs = {
'color': 'blue', # set same blue as the one in Blues cmap
'alpha': 0.3
}
plt.bar(x, y, **kwargs)
plt.bar(x, y*0.5, **kwargs)
plt.bar(x, y*2, **kwargs)
# From the docs: Create colormap from linear mapping segments
# segmentdata argument is a dictionary with a red, green and
# blue entries. Each entry should be a list of x, y0, y1 tuples,
# forming rows in a table. Entries for alpha are optional.
cdict = {
'red': [
(0.0, 0.0, 0.0),
(1.0, 0.0, 0.0) # red always 0
],
'green': [
(0.0, 0.0, 0.0),
(1.0, 0.0, 0.0), # green always 0
],
'blue': [
(0.0, 1.0, 1.0),
(1.0, 1.0, 1.0) # blue always 1
],
'alpha': [
(0.0, 0.01, 0.01),
(1.0, 1.0, 1.0) # alpha increases from 0.01 to 1
],
}
# colourbar from custom cdict
cmap = matplotlib.colors.LinearSegmentedColormap('blue', cdict, N=256)
plt.colorbar(cm.ScalarMappable(Normalize(0,1), cmap))
鏈接到生成的圖像
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.