我是 Python 可視化的新手。我試圖在左側繪制相同的資料集,但通過使用顏色作為漸變和網格線使其易于理解。但是我被卡住了,我不知道我做了什么,我只是使用了從其他類似問題中獲得的參考代碼。有人可以幫忙嗎?
import random
import matplotlib
import matplotlib.pyplot as plt
import tkinter as tk
from matplotlib.widgets import Slider
from matplotlib import colors
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib import style
import numpy as np
style.use('ggplot')
matplotlib.use('TkAgg')
def update(val):
pos = s_time.val
ax.axis([pos, pos 10, 20, 40])
fig.canvas.draw_idle()
def plot():
canvas = FigureCanvasTkAgg(fig,root)
canvas.get_tk_widget().pack(side=tk.TOP, fill = tk.BOTH, expand =1)
fig.subplots_adjust(bottom=0.25)
y_values = [random.randrange(41) for _ in range(40)]
x_values = [i for i in range(40)]
ax.axis([0, 9, 20, 40])
ax.plot(x_values, y_values)
#cmap = colors.ListedColormap(['red', 'blue','green'])
#bounds = [0,10,20,30]
#norm = colors.BoundaryNorm(bounds, cmap.N)
#ax1.imshow(ax, cmap=cmap, norm=norm)
im0 = ax1.pcolormesh([x_values,y_values], vmin=0, vmax=1, cmap="RdBu")
im = fig.colorbar(im0,cax=ax1)
ax1.grid(which='major', axis='both', linestyle='-', color='white', linewidth=0.5)
#ax1.set_yticks(np.arange(0, 40, 2.5))
ax_time = fig.add_axes([0.12, 0.1, 0.78, 0.03])
return ax_time
root = tk.Tk()
fig = plt.Figure(figsize = (10,10),dpi = 150)
ax=fig.add_subplot(121)
ax1=fig.add_subplot(122)
s_time = Slider(plot(), 'Time', 0, 30, valinit=0)
s_time.on_changed(update)
root.mainloop()
uj5u.com熱心網友回復:
免責宣告:不確定我是否正確理解了這個問題。也許您可以提供參考問題的鏈接。
如果您想在 matplotlib 中為線圖添加顏色漸變,據我所知,最好的辦法是使用ax.scatter. 這里有人問了一個類似的問題:
Matplotlib: different color for each point of line plot
要模仿線圖的外觀,您需要在將資料傳遞給散點函式之前對其進行線性插值。的c關鍵字引數可以被用來指定一個顏色值,以每個資料點和CMAP引數確定從顏色值到顏色的實際映射。
這是一個最低限度的作業示例:
import matplotlib.pyplot as plt
import numpy as np
f, ax = plt.subplots(1, 1)
y_values = np.random.randint(0, 41, size=40)
x_values = np.arange(0, 40, 1)
x_interp = np.arange(0, 40, 0.01)
y_interp = np.interp(x_interp, x_values, y_values)
ax.grid(alpha=0.5)
artist = ax.scatter(x_interp, y_interp, c=y_interp, cmap='seismic', lw=0)
f.colorbar(artist, ax=ax)
這產生以下情節
編輯:澄清后,我將問題解釋為:
“如何向線圖添加背景,顯示與 y 軸上的值相對應的顏色漸變”。
我的建議如下:
import matplotlib.pyplot as plt
import numpy as np
f, a = plt.subplots(1, 1)
value_range = (vmin, vmax) = (0, 40)
x_range = (xmin, xmax) = (0, 60)
X, Y = np.meshgrid(range(xmin, xmax, 1), range(vmin, vmax, 1))
y_data = np.random.randint(vmin, vmax, size=xmax-xmin)
x_data = np.arange(xmin, xmax, 1)
a.pcolormesh(Y, cmap="seismic", alpha=0.5, edgecolors='gray')
a.plot(x_data, y_data, "k-")
然后產生以下圖
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/375682.html
標籤:Python matplotlib 特金特 颜色
