我有一个大的节点和有向边的图.此外,我还为每个节点分配了一个额外的值列表.
我现在想根据节点值更改每个节点的颜色.例如,绘制具有非常高的红色值的节点和具有低值蓝色的节点(类似于热图).这在某种程度上很容易实现吗?如果没有使用networkx,我也可以使用Python中的其他库.
我正在尝试制作一个"有利于"较低值的颜色贴图,即从较暗的颜色中获取浅色需要更长的时间.目前我正在使用它作为colormap:
cmap = clr.LinearSegmentedColormap.from_list('custom blue', ['#ffff00','#002266'], N=256)
Run Code Online (Sandbox Code Playgroud)
我正在绘制一个圆柱体以查看效果(请参阅帖子末尾的圆柱代码),这是运行代码时会发生的情况:
如你所见,这是非常"线性"的.颜色开始沿着圆柱体的一半变化.有没有办法增加颜色开始快速变化的阈值?即我只想要非常高的数字才能获得最亮的黄色.谢谢.
from matplotlib import cm
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from scipy.linalg import norm
from mpl_toolkits.mplot3d.art3d import Poly3DCollection
import numpy as np
import math
import mpl_toolkits.mplot3d.art3d as art3d
import matplotlib.colors as clr
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
origin = [0,0,0]
#radius = R
p0 = np.array(origin)
p1 = np.array([8, 8, 8])
origin = np.array(origin)
R = 1
#vector in direction of axis
v = p1 …
Run Code Online (Sandbox Code Playgroud) 我有一系列在 -180 到 180 之间变化的值,我是一个关于零对称的颜色图,即 -180 的颜色对于 180 值是相同的,依此类推。这是我第一次使用 matplotlib 我只是没有找到使它围绕零对称的方法,负片总是与正片具有不同的颜色。非常感谢。
在制作散点图时,有许多选项可以分散颜色图,强调极值处的数据,但没有聚合颜色图的选项,强调接近范围中间的数据.任何人都可以建议一个,或告诉我为什么使用一个是个坏主意?
我的用例是散点图,其中每个点表示对不同数据集的拟合,而颜色表示拟合的降低的平方.我想强调接近一个的价值观,并且不再强调不合适.
编辑
这是我的用例更详细.我正在测量一种算法的性能,该算法旨在区分时间序列数据中的实际信号和系统信号(在这种情况下,行星在开普勒数据中转换而不是在数据中的毛刺中).对于每个模拟,我有一个输入值,一个描述算法决策的数字,以及一个测量拟合优度的降低的平方.我想使用颜色方案来突出显示最接近一个的卡方减少的点,而不是适合度差的情况.
有很多方法可以做到这一点(例如,有点大小),但如果可以,我想用颜色做.
我有一系列的线(目前总共60个),我想绘制到相同的数字,以显示某个过程的时间演变.绘制当前行,使最早的时间步长绘制为100%红色,最新时间步长绘制为100%蓝色,中间的时间步长是红色和蓝色的混合,基于它们的时间(红色的量随着时间的增加而线性减少,而蓝色的量随着时间的增加而线性增加;简单的颜色梯度).我想制作一种(最好是垂直的)某种颜色条,以连续的方式显示它.我的意思是我想要一个底部为红色,顶部为蓝色,条形中间有红色和蓝色混合的颜色条,以与线条相同的方式从红色平滑过渡到蓝色我情节.我还想在这个颜色条上放置轴,以便我可以显示哪个颜色对应于哪个时间步.
我已经阅读了文档,matplotlib.pyplot.colorbar()
但是如果不使用matplotlib之前定义的颜色映射,我无法弄清楚如何做我想做的事情.我的猜测是,我需要定义我自己的从红色到蓝色matplotlib.pyplot.colorbar()
的色彩映射,然后将它提供给我想要的颜色条是相对简单的.
这是我用来绘制线条的代码示例:
import numpy as np
from matplotlib import pyplot as pp
x= ##x-axis values for plotting
##start_time is the time of the earliest timestep I want to plot, type int
##end_time is the time of the latest timestep I want to plot, type int
for j in range(start_time,end_time+1):
##Code to read data in from time step number j
y = ##the data I want to plot
red = 1. - (float(j)-float(start_time))/(float(end_time)-float(start_time))
blue = (float(j)-float(start_time))/(float(end_time)-float(start_time)) …
Run Code Online (Sandbox Code Playgroud) 首先,我对Matplotlib或Seaborn的颜色很新.我的目的是创建一个条形图,其条形图根据自定义调色板着色.这样的东西,但我的自定义调色板(见下面,红色,橙色,绿色和蓝色的调色板):
我已经使用该LinearSegmentedColormap
方法创建了自定义顺序调色板,但我无法在简单中使用它plt.barplot()
.当然不难,但我看不出路.我使用下面的函数创建了调色板,从这个线程获得:使用matplotlib创建自己的颜色图并绘制颜色比例
def make_colormap(seq):
"""Return a LinearSegmentedColormap
seq: a sequence of floats and RGB-tuples. The floats should be increasing
and in the interval (0,1).
"""
seq = [(None,) * 3, 0.0] + list(seq) + [1.0, (None,) * 3]
cdict = {'red': [], 'green': [], 'blue': []}
for i, item in enumerate(seq):
if isinstance(item, float):
r1, g1, b1 = seq[i - 1]
r2, g2, b2 = seq[i + 1]
cdict['red'].append([item, r1, r2])
cdict['green'].append([item, g1, g2])
cdict['blue'].append([item, …
Run Code Online (Sandbox Code Playgroud) 我正在绘制箭头图,我的代码使用外部文件,如下所示:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
from pylab import rcParams
data=np.loadtxt(r'data.dat')
x = data[:,0]
y = data[:,1]
u = data[:,2]
v = data[:,3]
plt.quiver(x, y, u, v, angles='xy', scale_units='xy', scale=1, pivot='mid',color='g')
Run Code Online (Sandbox Code Playgroud)
数据文件基本上如下:
0 0 0 1
0 1 1 0
1 0 1 0
1 1 0 1
Run Code Online (Sandbox Code Playgroud)
这会产生一个看起来像的情节
有没有办法用不同的箭头方向绘制不同的颜色?
Ps.:我的数据文件中有更多的箭头,这是一个不太合乎逻辑的句子,就像我使用的那样.
我有一个用matplotlib显示的图像.
该图像由以下代码生成:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm
labels = ['Name1', 'Name2', 'Name3', 'Name4', 'Name5', 'Name6']
data = np.array(
[[ 0.000, 0.120, 0.043, 0.094, 0.037, 0.045],
[ 0.120, 0.000, 0.108, 0.107, 0.105, 0.108],
[ 0.043, 0.108, 0.000, 0.083, 0.043, 0.042],
[ 0.094, 0.107, 0.083, 0.000, 0.083, 0.089],
[ 0.037, 0.105, 0.043, 0.083, 0.000, 2.440],
[ 0.045, 0.108, 0.042, 0.089, 2.440, 0.000]])
mask = np.tri(data.shape[0], k=-1)
data = np.ma.array(data, mask=mask) # Mask out the lower …
Run Code Online (Sandbox Code Playgroud) 我正在尝试绘制一个三维表面,其中三个维度中的每个维度在一个单独的数组中,每个坐标处的表面着色是x,y,z的函数.一种numpy.pcolormesh,但在4D,而不是3D.3D图由下式给出:
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
fig = plt.figure()
ax = fig.gca(projection='3d')
x = np.logspace(-1.,np.log10(5),50)
y = np.linspace(6,9,50)
z = np.linspace(-1,1,50)
colors = LikeBeta(y,range(50),range(50))
ax.plot_trisurf(x,y,z,cmap=colors,linewidth=0.2)
Run Code Online (Sandbox Code Playgroud)
哪里
def LikeBeta(rho0,r0,beta):
M0 = 10**rho0*r0_array[r0]**3
I = cst*M0*sigma_los_beta[beta,:,r0]
S = dv**2+I
res = (np.log(S) + (v-u)**2/S).sum()
return res/2.
Run Code Online (Sandbox Code Playgroud)
可能cmap=colors
是错的,但问题出在其他地方.我收到以下错误:
----> 8 colors = LikeBeta(y,range(50),range(50))
----> 4 I = cst*M0*sigma_los_beta[beta,:,r0]
ValueError: operands could not be broadcast together with shapes (50,) (50,353)
Run Code Online (Sandbox Code Playgroud)
确实sigma_los_beta
是一个我单独评估并具有形状的阵列,(50,353,50)
而那些353是我必须拥有的数据.
如何将此函数转换为与其他条目兼容的表单plot_trisurf
?
抱歉,我无法提供最小的工作代码,因为dv,v和u是数据.非常感谢您的帮助.干杯
我需要使用彩虹色图来绘制填充有0.0到1.0的地球物理值的图像.
我尝试了matplotlib现有的彩虹色图,但我并不完全满意:
from matplotlib import pyplot as plt
import numpy as np
plt.pcolor(np.random.rand(10,10),cmap='rainbow')
plt.colorbar()
plt.show()
Run Code Online (Sandbox Code Playgroud)
如何创建一个范围从黑色到0.0的色彩图,然后逐渐显示以下颜色:紫色,蓝色,青色,绿色,黄色,最后红色为1.0?