Python Matplotlib图案填充在更新到版本2.1.2后不起作用
我将matplotlib从2.0.0版更新为2.1.2版,我的图案填充不再显示。 为了方便起见,我举了我在上一个问题()中发布的相同示例 如果我在python环境(python 3.5.2)中使用较旧版本的matloblib运行此代码,它将显示图案填充,而在升级matplotlib后则不会。如何仍显示图案填充Python Matplotlib图案填充在更新到版本2.1.2后不起作用,python,matplotlib,radar-chart,Python,Matplotlib,Radar Chart,我将matplotlib从2.0.0版更新为2.1.2版,我的图案填充不再显示。 为了方便起见,我举了我在上一个问题()中发布的相同示例 如果我在python环境(python 3.5.2)中使用较旧版本的matloblib运行此代码,它将显示图案填充,而在升级matplotlib后则不会。如何仍显示图案填充 import matplotlib as mpl import matplotlib.pyplot as plt import numpy as np import pandas as p
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import random
data = random.sample(range(100), 5)
data[0] = 100
data[3] = 50
index = ['industry', 'residential', 'agriculture', 'transport', 'other']
df1 = pd.DataFrame(data, index=index, columns=['data'])
df2 = pd.DataFrame(np.array(data)/2, index=index, columns=['data'])
fig = plt.figure()
ax = fig.add_subplot(111, projection="polar")
ax.grid(True)
ax.yaxis.grid(color='r')
ax.xaxis.grid(color='#dddddd')
for spine in ax.spines.values():
spine.set_edgecolor('None')
theta = np.arange(len(df1))/float(len(df1))*2.*np.pi
l1, = ax.plot(theta, df1["data"], color="gold", marker="o", label=None, zorder=1) # , zorder = -3)
l2, = ax.plot(theta, df2["data"], color='tomato', marker="o", label=None, zorder=1.1) #, zorder =-2)
def _closeline(line):
x, y = line.get_data()
x = np.concatenate((x, [x[0]]))
y = np.concatenate((y, [y[0]]))
line.set_data(x, y)
[_closeline(l) for l in [l1, l2]]
mpl.rcParams['hatch.color'] = 'red'
ax.fill(theta, df1["data"], edgecolor="gold", alpha=1, color = 'None', zorder=1)
ax.fill(theta, df2["data"], edgecolor='tomato', hatch='///', color = 'None', zorder=2)
ax.set_rlabel_position(216)
ax.set_xticks(theta)
ax.set_xticklabels(df2.index, fontsize=12)#, zorder=1)
for it in np.arange(len(theta)):
txt = ax.text(theta[it], 100*1.1, index[it], va = 'center', ha = 'center', fontsize = 12)
ax.set_xticklabels('')
legend = plt.legend(handles=[l1,l2], labels =['first','second'], loc='lower right')
plt.title("data [unit]", fontsize = 16, y = 1.2)
plt.show()
要在matplotlib中获得无背景的阴影区域,可以设置
fill=False
ax.fill(..., hatch='///', edgecolor="gold", fill=False)
完整示例:
import matplotlib.pyplot as plt
import numpy as np
a = np.array([[0, 0], [1, 0.2], [1, 1.2], [0, 1.]])
fig, ax = plt.subplots()
ax.fill(a[:,0],a[:,1], hatch='///', edgecolor="gold", alpha=1, fill=False)
plt.show()
您能否清楚地说明期望的结果是什么,或者与现在的结果相比,它在以前的版本中看起来如何?有些颜色包括红色、金色、“无”,但哪些部分应该如何着色?内部图形中应该有阴影填充(与旧版本的matplolib显示良好,但不更改代码),我理解这一点。但我想问的是,你到底希望补丁看起来怎么样(edgecolor和“hatch.color”之间似乎存在一些矛盾)。只要描述一下它看起来应该是什么样子,而不考虑一些代码在以前的版本中产生了一些其他结果的事实。我将在周一发布一张图片。但我应该在中间的图中看到倾斜的红线。。有点像这样///干杯!它起作用了,我将第二次填充改为
ax.fill(θ,df2[“data”],hatch='//',alpha=1,edgecolor='tomato',fill=False,zorder=2)