我已经在Paul的帮助下修改了我的应用程序的mplot3d 示例代码.代码如下:
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
u = np.linspace(0, 2 * np.pi, 100)
v = np.linspace(0, np.pi, 100)
x = 10 * np.outer(np.cos(u), np.sin(v))
y = 10 * np.outer(np.sin(u), np.sin(v))
z = 10 * np.outer(np.ones(np.size(u)), np.cos(v))
z1 = z * np.cos(0.5*x)
N = z1 / z1.max() # normalize 0..1
surf = ax.plot_surface(x, y, z, rstride=1, cstride=1, facecolors=cm.jet(N), linewidth=0, antialiased=False, shade=False)
fig.colorbar(surf, shrink=0.5, aspect=5)
plt.show() …Run Code Online (Sandbox Code Playgroud) 我想在GeoPandas上创建一个Matplotlib颜色条.
import geopandas as gp
import pandas as pd
import matplotlib.pyplot as plt
#Import csv data
df = df.from_csv('data.csv')
#Convert Pandas DataFrame to GeoPandas DataFrame
g_df = g.GeoDataFrame(df)
#Plot
plt.figure(figsize=(15,15))
g_plot = g_df.plot(column='column_name',colormap='hot',alpha=0.08)
plt.colorbar(g_plot)
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
AttributeError Traceback (most recent call last)
<ipython-input-55-5f33ecf73ac9> in <module>()
2 plt.figure(figsize=(15,15))
3 g_plot = g_df.plot(column = 'column_name', colormap='hot', alpha=0.08)
----> 4 plt.colorbar(g_plot)
...
AttributeError: 'AxesSubplot' object has no attribute 'autoscale_None'
Run Code Online (Sandbox Code Playgroud)
我不知道如何让colorbar工作.
我想以对数比例绘制,我已经使用以下方法完成了:
plt.contourf(cube[0,:,:].data, levels=np.arange(0,6000,10), norm=mplc.LogNorm())
Run Code Online (Sandbox Code Playgroud)
但是我希望颜色条仍然是线性比例...这可能吗?如果可以的话我该怎么做?norm 关键字在命令中似乎无效plt.colorbar()。
我正在尝试在图形中添加颜色条,但我不明白它是如何工作的.问题是我通过以下方式制作自己的颜色代码:
x = np.arange(11)
ys = [i+x+(i*x)**2 for i in range(11)]
colors = cm.rainbow(np.linspace(0, 1, len(ys)))
Run Code Online (Sandbox Code Playgroud)
并colors[i]会给我一个新的颜色.然后我使用(自制)函数来选择相关数据并相应地绘制它们.这看起来像这样:
function(x,y,concentration,temperature,1,37,colors[0])
function(x,y,concentration,temperature,2,37,colors[1])
# etc
Run Code Online (Sandbox Code Playgroud)
现在我想在颜色条中添加颜色,我可以更改标签.我该怎么做呢?
我已经看过几个例子,你将所有数据绘制成一个数组,带有自动颜色条,但是在这里我逐个绘制数据(通过使用函数来选择相关数据).
编辑:
函数(x,y,浓度,温度,1,37,颜色[0])看起来像这样(简化):
def function(x,y,c,T,condition1,condition2,colors):
import matplotlib.pyplot as plt
i=0
for element in c:
if element == condition1:
if T[i]==condition2:
plt.plot(x,y,color=colors,linewidth=2)
i=i+1
return
Run Code Online (Sandbox Code Playgroud) 我试图制作一个简单的图表,显示许多属于具有特定顺序的大型数据集的曲线,比如说情节1..n.随着n的增加,曲线的形状逐渐变化.读者可以准确地看到哪个图属于n的哪个值并不重要,但是他们应该能够猜测n的数量级.
因此,我做这样的事情:
nValues = range(0,30)
xValues = np.linspace(0,10)
dataset = [(xValues-5-0.5*n)**2 for n in nValues]
colors = {n: colorsys.hsv_to_rgb(hue,0.9,0.7) for n,hue in zip(nValues,np.linspace(0,0.7,len(nValues)))}
for n in nValues:
plt.plot(dataset[n],color=colors[n])
Run Code Online (Sandbox Code Playgroud)
(为了清楚起见,这仅仅是为了示例,我的数据实际上存储在一个漂亮的pandas数据帧中.)

而不是图例,我想在图表旁边添加一个颜色条,可能有几个标记和标签(至少是最小值和最大值),以指示哪个颜色属于n的哪个值,但我不是知道如何做到这一点.如果我真的从ColorMap获得我的绘图颜色,我认为事情可能会更容易,但我也不知道如何做到这一点,我也不知道如何从那里开始.
欢迎任何指示!
我想添加一个颜色条,而没有轴在绘制事物时返回的内容。有时我将事物绘制到函数内的轴上,该轴不返回任何内容。有没有办法从预先完成绘图的轴获取颜色条的可映射性?我相信有足够的关于绑定到轴本身的颜色图和颜色范围的信息。
我希望 tp 做这样的事情:
def plot_something(ax):
ax.plot( np.random.random(10), np.random.random(10), c= np.random.random(10))
fig, axs = plt.subplots(2)
plot_something(axs[0])
plot_something(axs[1])
mappable = axs[0].get_mappable() # a hypothetical method I want to have.
fig.colorbar(mappable)
plt.show()
Run Code Online (Sandbox Code Playgroud)
编辑
对可能重复的答案可以部分解决我在代码片段中给出的问题。然而,这个问题更多的是关于从轴检索一般可映射对象,根据 Diziet Asahi 的说法,这似乎是不可能的。