What I would like to achieve is this: enter image description here

如何将CartesianGrid配置为在横轴上有虚线,在垂直轴上有一条实线?

推荐答案

在我看来,根据配置选项,没有简单的解决方案.可以通过更改任一端的网格线来实现复杂的解决方案:在创建网格线时(下面的解决方案)或在呈现网格线之后-生成的SVG中的网格线可能被访问为.recharts-cartesian-grid-horizontal > line,并且这些线需要更改其stroke-dasharray属性.

因此,一个可能的解决方案是扩展类CartesianGrid.下面是一个快速解决方案,它只解决所提出的问题;您可以将其扩展到具有垂直线和水平线不同属性的复杂网格类.这方面的参考应该来自源代码:CartesianGrid.tsx.

更改垂直轴的stroke-dasharray的类可以实现为(TSX):

class CartesianGridNoDashVertical extends CartesianGrid {
  renderVertical(verticalPoints: number[]): JSX.Element {
    const element = super.renderVertical(verticalPoints);
    const lines = element.props.children.map((el: JSX.Element) =>
      React.cloneElement(el, { strokeDasharray: "0" })
    );
    return React.cloneElement(element, [], lines);
  }
}

并用来代替标记中的标准网格元素:

<LineChart
      width={500}
      height={300}
      data={data}
  >
    <CartesianGridNoDashVertical strokeDasharray="3 3" />
    <XAxis />
    <YAxis />    
</LineChart>

下面是一个来自标准重新图表示例的sandbox.

Reactjs相关问答推荐

如何在Pivot模式下自定义标题?

LocalStore未存储正确的数据

后端关闭时如何在REACTION AXIOS拦截器中模拟数据?

shadcn输入+窗体+Zod;一个部件正在改变要被控制的不受控制的输入;

如何修复ReferenceError:在构建过程中未定义导航器

在 React 中使用forwardRef时无法声明自定义属性

React Js和Firestore中如何将当前ID与集合中的ID查询以仅显示具有相似字段和值的文档-第二部分

如何在Next.js应用程序中为路由[slug]生成.html文件?

React 组件列表中的第一个计时器正在获取值 NaN

React + Redux:数据未正确传递给具有动态路由的组件

如何在悬停时更改 MUI 卡内容

Redux Toolkit 配置,是否适用于全栈应用程序?

react-router v6 中的 BrowserRouter 和 createBrowserRouter 有什么区别?我可以在不使用数据 API 的情况下使用 createBrowserRouter 吗?

使用 Vite 的 React 中的路由无法正常工作(构建中)

如何向 surveyjs 调查添加多个结尾?

useState 在生命周期中的位置

用 jest 测试包裹在 redux 和 router 中的组件

当页面重新加载react 路由导航到第一页 v6

单击按钮时获取react 表中每一行的属性

ClearInterval 在 React 中的 useRef 没有按预期工作