我有一系列行存储在列表中,如下所示:
line_list = [line_1, line_2, line_3, ..., line_M]
Run Code Online (Sandbox Code Playgroud)
其中每个line_i是由两个子子列表组成的子列表,一个用于x坐标,另一个用于y坐标:
line_i = [[x_1i, x2_i, .., x_Ni], [y_1i, y_2i, .., y_Ni]]
Run Code Online (Sandbox Code Playgroud)
我也有一个line_list与花车相同长度的列表,:
floats_list = [0.23, 4.5, 1.6, ..., float_M]
Run Code Online (Sandbox Code Playgroud)
我想绘制每一行,给它一个颜色图中的颜色,并与floats_list列表中索引的位置相关.因此line_j它的颜色将由数字决定floats_list[j].我还需要在侧面显示一个颜色条
代码会喜欢这样的东西,除了它应该工作:)
import matplotlib.pyplot as plt
line1 = [[0.5,3.6,4.5],[1.2,2.0,3.6]]
line2 = [[1.5,0.4,3.1,4.9],[5.1,0.2,7.4,0.3]]
line3 = [[1.5,3.6],[8.4,2.3]]
line_list = [line1,line2,line3]
floats_list = [1.2,0.3,5.6]
# Define colormap.
cm = plt.cm.get_cmap('RdYlBu')
# plot all lines.
for j,lin in enumerate(line_list):
plt.plot(lin[0], lin[1], c=floats_list[j])
# Show colorbar.
plt.colorbar()
plt.show()
Run Code Online (Sandbox Code Playgroud) 我正在尝试为多个条目绘制多个间隔。
我尝试使用循环来枚举条目,一次绘制一个间隔。
import matplotlib.pyplot as plt
intervals = [(1, 2), (1.1, 2.5), (1.2, 4), (1.5, 10), (1.7, 12)]
num_intervals = len(intervals)
viridis = plt.cm.get_cmap('viridis', num_intervals)
fig, ax = plt.subplots()
for idx, (min_int, max_int) in enumerate(intervals):
ax.hlines(y=idx, xmin=min_int, xmax=max_int, colors=viridis(idx / num_intervals), label=idx)
ax.legend()
plt.yticks([], [])
plt.show()
Run Code Online (Sandbox Code Playgroud)
我希望使用 matplotlib 的内置方法一次性绘制多个间隔。另外,我希望绘制图像中每个间隔的最小值和最大值。
有没有办法根据边缘颜色(而不是节点颜色)在 networkx 中创建图例?
这是我的图表:
plt.figure(figsize = (15, 10))
G = nx.from_pandas_dataframe(df, 'From', 'To', ['Order', 'Colors'])
edge_labels = nx.get_edge_attributes(G, 'Order')
nx.draw_networkx(G, with_labels = False, node_color = 'black', alpha = 0.5, node_size = 3, linewidths = 1, edge_color = df['Colors'], edge_cmap =
plt.cm.Set2)
plt.show()
Run Code Online (Sandbox Code Playgroud)
其中,['Order']是边缘的描述符,['Color']是映射到 中每个值的唯一整数['Order'],它致力于基于 Set2 颜色图创建边缘颜色。
我可以使用以下内容获取边缘标签:
edge_labels = nx.get_edge_attributes(G, 'Order')
但是如何将其放入图例中?
如果有帮助,我很乐意分享数据和完整代码!